我正在学习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
所以我应该使用root start-all.sh
或者权限有问题(我真的很困惑)?
答案 0 :(得分:1)
不推荐以root身份启动Hadoop,下面引用了Yahoo的Hadoop教程:
拥有Hadoop实例的用户需要阅读和 对每个目录的写访问权限。并非所有人都必须这样做 用户可以访问这些目录。使用chmod设置权限 作为适当的。在大规模的环境中,建议 为了明确的目的,在每个节点上创建一个名为“hadoop”的用户 拥有和运行Hadoop任务。对于单个人的机器, 用你自己的用户名运行Hadoop是完全可以接受的。它 不建议您以root身份运行Hadoop。
即使foo-user
位于Linux文件系统的组hadoop
中,您仍需要确保
foo-user
也是HDFS中的群组成员(默认情况下,该群组名为supergroup
),当您执行hadoop fs -ls path_to_your_data
时,您将看到该群组的内容。
答案 1 :(得分:0)
组以及用户需要hadoop。你有:
drwxrwxr-x root hadoop 4096 Feb 8 23:42 hadoop
所以将root更改为hadoop(当然我不能访问任何linux机器,因此我无法说出确切的命令),然后确保hadoop用户能够在其中创建filies和目录/var/run/hadoop
。我强烈建议以非root用户身份运行它。