多用户访问webhdfs

v6ylcynt  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(299)

正如标题所说,是否可以创建一个服务来处理来自同一领域的多个用户的webhdfs请求?
我对这个问题相当迷茫,在网上搜索了很多东西,但似乎没有人能回答我的问题。
我使用springboot来测试这个,到目前为止,我已经做了以下工作:
应用程序.yml:


# HDFS properties

hdfs:
  user: user1
  config.path: file:/environment/hadoop-config/local.xml
  base:
    path: /user/${hdfs.user}
    data.path: ${hdfs.base.path}/data
@Bean("FileSystem")
public FileSystem hadoopConfig(
        @Value("${hdfs.config.path}") final Resource hdfsConfig,
        @Value("${hdfs.user}") final String hdfsUser
) throws IOException {
    final org.apache.hadoop.conf.Configuration config = new org.apache.hadoop.conf.Configuration();
    config.addResource(hdfsConfig.getInputStream());

    UserGroupInformation.setConfiguration(config);
    UserGroupInformation.setLoginUser(UserGroupInformation.createRemoteUser(hdfsUser));

    final FileSystem fileSystem = FileSystem.get(config);
    return fileSystem instanceof WebHdfsFileSystem ? fileSystem : null
}

如您所见,这是一个配置为只与一个用户一起工作的bean。
实验场景。user1有权只读取其数据并发送请求以列出/user1/data/foo中的数据,同时user2有权只读取其数据并发送请求以列出/user1/data/foo中的数据,但被拒绝。这可能吗?
jaas文件可以定义多个主体吗?实验。

client {
    com.sun.security.auth.module.Krb5LoginModule required
    doNotPrompt=true
    principal=“user1@EXAMPLE.COM”
    useKeyTab=true
    keyTab=“/etc/secrets/user1.keytab"
    storeKey=true;

    com.sun.security.auth.module.Krb5LoginModule required
    doNotPrompt=true
    principal=“user2@EXAMPLE.COM”
    useKeyTab=true
    keyTab=“/etc/secrets/user2.keytab"
    storeKey=true;
};

纯java也可以工作,我只需要理解这个概念。谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题