5

我已经设置了一个单节点多用户 hadoop 集群。在我的集群中,有一个管理员用户负责运行集群(超级用户)。所有其他用户都被分配了一个 hdfs 目录,例如 /home/xyz,其中 xyz 是用户名。

在 unix 中,我们可以在 /etc/passwd 中更改用户的默认主目录。默认情况下,用户的登陆目录是主目录。

如何在 hadoop 中为 hdfs 文件系统执行此操作。例如,如果用户在 unix 提示符下键入:$hadoop dfs -ls。它将列出我分配的主目录的内容。

此外,hdfs 目录由运行集群的超级用户(hadoop 超级用户而不是 unix root)创建,然后将所有权转移给特定用户。

4

2 回答 2

8

我不确定这是可以配置的东西 - DistributedFileSystem的源代码(第 150 行)调用了似乎是硬编码的 getHomeDirectory:

@Override
public Path getHomeDirectory() {
  return makeQualified(new Path("/user/" + dfs.ugi.getShortUserName()));
}

如果您希望能够更改此设置,您确实有两种可能的选择:

  • 向 hadoop 提交工单,要求提供新功能 -请参阅此链接
  • 自己修改源代码并在整个集群中重新构建 + 重新分发 hadoop-core jar(在单节点伪集群中很简单)
于 2012-04-09T10:30:32.920 回答
1

Tapan,每个用户在 HDFS 中都有一个位于 /user/username 的“主”目录。例如,如果您键入 hadoop fs -ls,它将带您到当前的 HDFS 用户目录。我和两个用户一起检查了它。

来到 unix 之类的文件(/etc/passwd)设置,我不知道。但是,这真的很有趣。正如克里斯所说,我们可以添加新功能,例如引入 user-admin-site.xml 配置文件并添加组、用户对目录的权限、主目录等。真的很有趣,我们可以试试这个......

于 2012-04-10T03:22:07.070 回答