HDFS由root或非root用户启动all.sh



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

当我尝试使用start-all.sh来启动Hadoop守护进程时,我应该使用像foo用户这样的非root用户还是使用root用户。

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

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

/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

所以我应该为start-all.sh使用root吗?或者权限有问题(我真的很困惑)?

不建议将Hadoop作为根启动,下面引用自雅虎的Hadoop教程:

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

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

组以及用户都需要是hadoop。给你:

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

因此,将root更改为hadoop(目前我无法访问任何linux机器,因此无法说出确切的命令),然后确保hadoop用户能够在/var/run/hadoop中创建分支和目录。我强烈建议非root用户运行它。

相关内容

  • 没有找到相关文章

最新更新