未定义hdfs\u namenode\u user、hdfs\u datanode\u user和hdfs\u secondarynamenode\u user

jdgnovmf  于 2021-05-29  发布在  Hadoop
关注(0)|答案(5)|浏览(451)

我是hadoop新手。
我正试图在我的笔记本电脑中以伪分布式模式安装hadoop。
我正在用root用户运行它,但是我得到下面的错误。

root@debdutta-Lenovo-G50-80:~# $HADOOP_PREFIX/sbin/start-dfs.sh
WARNING: HADOOP_PREFIX has been replaced by HADOOP_HOME. Using value of HADOOP_PREFIX.
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 [debdutta-Lenovo-G50-80]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
WARNING: HADOOP_PREFIX has been replaced by  HADOOP_HOME. Using value of HADOOP_PREFIX.

另外,我必须在root user中运行hadoop,因为hadoop无法与其他用户一起访问ssh服务。
如何修复相同的问题?

axzmvihb

axzmvihb1#

根据第一次警告, HADOOP_PREFIX ,听起来你还没有定义 HADOOP_HOME 正确地。
这将在你的时间内完成 /etc/profile.d . hadoop-env.sh 是定义这些变量其余部分的位置。
请参阅unixshell指南
hadoop无法使用其他用户访问ssh服务
这与hadoop本身无关。这是基本的ssh帐户管理。你需要
在集群的所有机器上创建hadoop(以及其他类似yarn的)帐户(参见 adduser 命令文档)
使用复制无密码ssh密钥 ssh-copy-id hadoop@localhost ,例如
如果您不需要分布式模式,只想在本地使用hadoop,那么可以使用小型集群。
文档还建议在继续进行伪分布式之前进行单节点安装

6psbrbz9

6psbrbz92#

这个问题的根本原因,
为不同的用户安装hadoop,并为不同的用户启动yarn服务。或
在hadoop config的hadoop-env.sh中,指定的hdfs\u namenode\u user和hdfs\u datanode\u user user是另一种类型。
因此,我们需要在每个地方纠正和保持一致。所以解决这个问题的一个简单方法就是编辑 hadoop-env.sh 文件并添加要为其启动服务的用户名。所以继续编辑吧 $HADOOP_HOME/etc/hadoop/hadoop-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

现在保存并启动yarn,hdfs服务并检查它是否工作。

carvr3hs

carvr3hs3#

vim ${HADOOP_HOME}sbin/start-dfs.sh & ${HADOOP_HOME}sbin/stop-dfs.sh ,然后添加:

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs 
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root
4uqofj5v

4uqofj5v4#

照它说的做:

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"
lnlaulya

lnlaulya5#

检查您的pdsh默认rcmd rsh
pdsh-q-wlocalhost——应该得到这样的结果
--dsh特定选项--单独的stderr/stdout yes path在cmd none前面附加到cmd none命令:none完整程序路径名/usr/bin/pdsh远程程序路径/usr/bin/pdsh
--通用选项--本地用户名enock local uid 1000远程用户名enock rcmd type rsh one ^c将终止pdsh no connect timeout(secs)10命令超时(secs)0扇出32显示主机名标签yes调试no
--目标节点--本地主机
修改pdsh默认rcmd。将pdsh添加到bashrc nano ~/.bashrc--将此行添加到export pdsh\u rcmd\u type=ssh--update source ~/.bashrc的末尾
那应该能解决你的问题
c。sbin/start-dfs.sh文件

相关问题