自学hadoop 遇到的第一个问题
环境
Centos7 - 1台虚拟机
hadoop-3.2.1
OpenJDK1.8.0_181
root用户 - 伪分布式
执行sbin/start-dfs.sh报错,启动失败
Starting namenodes on [localhost]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [ip10]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
这个问题在网上一搜有很多,解决方案即在sbin/start-dfs.sh ,sbin/stop-dfs.sh
脚本里添加几行代码,鄙人不才,加完以后依然不能解决问题,在多次尝试以及看脚本里的注释后,定位问题:如下代码不能添加在脚本最后,需添加到脚本顶部,即可解决问题。
在 sbin/start-dfs.sh , sbin/stop-dfs.sh 脚本里添加如下代码:
(sbin/stop-dfs.sh脚本不添加的话,执行本脚本依然有如上错误,且服务无法关闭)
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
网上大部分文章里都关于yarn的配置,可能是后边的服务需要,我这里暂时不需要配置如下代码,服务即可正常启动。在 sbin/stop-yarn.sh ,sbin/start-yarn.sh 脚本里添加如下代码
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
我回来了,刚走没多久,上面这三居yarn相关的,的确需要,在执行sbin/stop-yarn.sh ,sbin/start-yarn.sh的时候也报类似的错
至于以上代码为何如此配置,等我明白了再来解释