我正在学习hadoop,想试试伪分布式操作
当我尝试使用 start-all.sh
要启动hadoop守护进程,我应该使用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用户没有权限在 /var/run/hadoop
我查了一下 /var/run/hadoop
```
drwxrwxr-x root hadoop 4096 Feb 8 23:42 hadoop
foo用户在hadoop组中,因此应该有写入权限 `/var/run/hadoop` . 实际上,这里还创建了其他几个id文件,比如…jobtracker.pid
所以我应该用root来 `start-all.sh` 或者许可有问题(我真的很困惑)?
2条答案
按热度按时间yiytaume1#
组和用户都需要hadoop。给你:
所以把根目录改成hadoop(现在我没有访问任何linux机器的权限,所以我不能说确切的命令),然后确保hadoop用户能够在其中创建文件和目录
/var/run/hadoop
. 我强烈建议以非root用户的身份运行它。ojsjcaue2#
不建议将hadoop作为根目录启动,以下引用自yahoo的hadoop教程:
拥有hadoop示例的用户需要对每个目录都有读写权限。并非所有用户都有权访问这些目录。根据需要使用chmod设置权限。在大规模环境中,建议您在每个节点上创建一个名为“hadoop”的用户,以便拥有和运行hadoop任务。对于单个个人的机器来说,用自己的用户名运行hadoop是完全可以接受的。不建议您以root身份运行hadoop。
尽管
foo-user
在组中hadoop
在linux文件系统中,您仍然需要确保foo-user
也是hdfs中的组成员(默认情况下,该组称为supergroup
),您将看到该组是什么,当您这样做hadoop fs -ls path_to_your_data
.