hdfs start-all.sh

iq3niunx  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(405)

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

yiytaume1#

组和用户都需要hadoop。给你:

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

所以把根目录改成hadoop(现在我没有访问任何linux机器的权限,所以我不能说确切的命令),然后确保hadoop用户能够在其中创建文件和目录 /var/run/hadoop . 我强烈建议以非root用户的身份运行它。

ojsjcaue

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 .

相关问题