报错显示
配置完Hadoop,启动hadoop集群运行时报了以下错误信息:
Starting namenodes on [master] 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 ERROR: Attempting to operate on hdfs secondarynamenode as root ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation. Starting journal nodes ERROR: Attempting to operate on hdfs journalnode as root ERROR: but there is no HDFS_JOURNALNODE_USER defined. Aborting operation. Starting ZK Failover Controllers on NN hosts ERROR: Attempting to operate on hdfs zkfc as root ERROR: but there is no HDFS_ZKFC_USER defined. Aborting operation.
错误原因
使用root账号启动服务,但没预先定义
解决办法
首先进入hadoop/sbin目录,然后按照一下步骤进行修改。
1.修改start-dfs.sh
和stop-dfs.sh
cd /export/servers/hadoop/sbin vim start-dfs.sh vim stop-dfs.sh
2.在头部添加以下内容:
HDFS_ZKFC_USER=root HDFS_JOURNALNODE_USER=root HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=root #HADOOP_SECURE_DN_USER=root
3.修改start-yarn.sh
和stop-yarn.sh
cd /export/servers/hadoop/sbin vim start-yarn.sh vim stop-yarn.sh
4.在头部添加以下内容:
#HADOOP_SECURE_DN_USER=root HDFS_DATANODE_SECURE_USER=root YARN_NODEMANAGER_USER=root YARN_RESOURCEMANAGER_USER=root
5.同步到其它机器
cd /export/servers//hadoop/sbin scp * spark02:/export/servers/hadoop/sbin scp * spark03:/export/servers/hadoop/sbin
注意:该步骤需要在每台机器中都执行,也可以先在其中一台机器中修改,然后再用scp同步给其它机器,还需要注意报错之中都分别报了有哪些需要添加root用户或者其它用户,没有的可以自己加上。
修改后重新启动Hadoop就成功了!
结语
每个人刚开始学习的时候都是小白,这个过程中或多或少的都会看看别人写的博客,过程中也可能会踩过很多坑。遇到问题的时候,我们可以记录下来,不管是对自己还是对其他学习的小伙伴都很有帮助。程序员大多都是很孤独的,写作也可以让自己的孤独“有处安放”,多去表达,多点表达,对于不善言辞的程序员总是有很多好处,博文写作的过程中最重要的是思路清晰有条理,和敲代码最大的不同是,编程有了明确的目标,日复一日必成高手,而写作如果只是为了写而写,往往会失了初心,丢了本真。写作不仅可以提高言语表达能力,更可以培养持续做事情的毅力,最好得是能遇到很多志同道合的朋友。