最近在升级 Hadoop3.1.3 版本首次启动集群时报如下错误:

1
2
3
4
5
6
7
8
9
Starting namenodes on [hadoop100]
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 [hadoop102]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operatio

解决方法一
直接在环境变量中添加如下配置:
本人安装的服务环境变量统一配置在/etc/profile.d/custome_env.sh,custome_env.sh是自己添加的文件,不建议直接修改profile.d

1
2
3
4
5
6
7
8
9
vim /etc/profile.d/custome_env.sh

#添加如下配置

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

修改完成后,source 使环境变量立即生效。

解决方法二
修改 hadoop 安装目录下的 start-dfs.sh,stop-dfs.sh 两个脚本文件,在顶部添加以下参数

1
2
3
4
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

修改 start-yarn.sh,stop-yarn.sh 两个脚本文件,在顶部添加以下参数

1
2
3
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

修改完成后,分发copy到其它节点,然后重启即可。