0

我正在学习Hadoop,想试试伪分布式操作

当我尝试使用start-all.sh启动 Hadoop 守护程序时,我应该使用非 root 用户,如 foo-user 还是使用 root。

使用root没有问题,但是我有点担心。

使用非 root 用户 foo-user,它抱怨它没有文件权限

/var/run/hadoop/hadoop-foo-user-namenode.pid: permission denied
/var/run/hadoop/hadoop-foo-user-tasktracker-foohost.pid: permission denied

它试图在目录中创建这两个文件/var/run/hadoop

我试过了vim /var/run/hadoop/testfile,无法保存。结果发现 foo-user 没有权限在/var/run/hadoop

我检查了许可/var/run/hadoop

drwxrwxr-x root hadoop 4096 Feb 8 23:42 hadoop

foo-user 在组 hadoop 中,所以应该对/var/run/hadoop. 实际上,那里还创建了其他几个 id 文件,例如 ...jobtracker.pid

那么我应该使用 rootstart-all.sh还是权限有问题(我真的很困惑)?

4

2 回答 2

1

不建议以 root 启动 Hadoop,以下引自 Yahoo 的 Hadoop 教程:

拥有 Hadoop 实例的用户需要对这些目录中的每一个具有读写访问权限。并非所有用户都有权访问这些目录。根据需要使用 chmod 设置权限。在大规模环境中,建议您在每个节点上创建一个名为“hadoop”的用户,以明确拥有和运行 Hadoop 任务的目的。对于单个人的机器,使用自己的用户名运行 Hadoop 是完全可以接受的。不建议您以 root 身份运行 Hadoop。

即使在 Linux 文件系统foo-user中的组hadoop中,您仍然需要确保它foo-user也是 HDFS 中的组成员(默认情况下,该组称为supergroup),当您这样做时,您会看到该组是什么hadoop fs -ls path_to_your_data

于 2013-02-10T17:54:47.067 回答
0

group as well as user needs to be hadoop. Here you have:

drwxrwxr-x root hadoop 4096 Feb 8 23:42 hadoop

so change the root into hadoop (curently i don't have access to any linux machine so I can't say exact commands), then make yourself sure that hadoop user is able to create filies and directories within /var/run/hadoop. I strongly recommend to run it s non-root user.

于 2013-02-09T12:36:59.317 回答