root或非root用户的HDFS start-all.sh

时间:2013-02-09 04:49:06

标签: linux shell hadoop mapreduce hdfs

我正在学习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或者权限有问题(我真的很困惑)?

2 个答案:

答案 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用户身份运行它。