HDFS_NAMENODE_USER、HDFS_DATANODE_USER & HDFS_SECONDARYNAMENODE_USER 未定义
HDFS_NAMENODE_USER, HDFS_DATANODE_USER & HDFS_SECONDARYNAMENODE_USER not defined
我是 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 用户中的 hadoop,因为 hadoop 无法通过其他用户访问 ssh 服务。
如何解决同样的问题?
根据第一个警告 HADOOP_PREFIX
,听起来您没有正确定义 HADOOP_HOME
。
这将在您的 /etc/profile.d
中完成。
hadoop-env.sh
是定义这些变量的其余部分的地方。
hadoop is not able to access ssh service with other user
这与Hadoop本身无关。这是基本的 SSH 帐户管理。你需要
- 在集群的所有机器上创建 hadoop(和其他,如 yarn)帐户(参见
adduser
命令文档)
- 使用
ssh-copy-id hadoop@localhost
复制无密码 SSH 密钥,例如
如果不需要分布式模式,只想在本地使用Hadoop,可以使用Mini Cluster.
文档还建议在继续伪分布式之前进行单节点安装
照它说的做:
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"
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
这个问题的根本原因,
- 为不同的用户安装hadoop,然后为不同的用户启动纱线服务。
或者
- 在 hadoop 配置的 hadoop-env.sh 中指定了 HDFS_NAMENODE_USER 和 HDFS_DATANODE_USER 用户是其他的。
因此我们需要更正并使其在每个地方保持一致。所以这个问题的一个简单的解决方案是编辑你的 hadoop-env.sh
文件并添加你想要启动 yarn 服务的用户名。因此,继续编辑 $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 服务并检查它是否工作。
- 检查您的 pdsh 默认 rcmd rsh
pdsh -q -w localhost -- 应该得到这样的东西
-- DSH-specific 选项 --
分开 stderr/stdout 是
cmd none 前面的路径
附加到 cmd none
命令:none
完整的程序路径名 /usr/bin/pdsh
远程程序路径/usr/bin/pdsh
-- 通用选项 --
本地用户名 enock
本地 uid 1000
远程用户名enock
Rcmd 类型 rsh
一个 ^C 将杀死 pdsh 否
连接超时(秒)10
命令超时(秒)0
扇出 32
显示主机名标签 是
调试否
-- 目标节点 --
本地主机
- 修改pdsh默认rcmd。将 pdsh 添加到 bashrc
纳米~/.bashrc
-- 在末尾添加这一行
导出 PDSH_RCMD_TYPE=ssh
- 更新
来源 ~/.bashrc
这应该可以解决您的问题
C。 sbin/start-dfs.sh
我是 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 用户中的 hadoop,因为 hadoop 无法通过其他用户访问 ssh 服务。
如何解决同样的问题?
根据第一个警告 HADOOP_PREFIX
,听起来您没有正确定义 HADOOP_HOME
。
这将在您的 /etc/profile.d
中完成。
hadoop-env.sh
是定义这些变量的其余部分的地方。
hadoop is not able to access ssh service with other user
这与Hadoop本身无关。这是基本的 SSH 帐户管理。你需要
- 在集群的所有机器上创建 hadoop(和其他,如 yarn)帐户(参见
adduser
命令文档) - 使用
ssh-copy-id hadoop@localhost
复制无密码 SSH 密钥,例如
如果不需要分布式模式,只想在本地使用Hadoop,可以使用Mini Cluster.
文档还建议在继续伪分布式之前进行单节点安装
照它说的做:
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"
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
这个问题的根本原因,
- 为不同的用户安装hadoop,然后为不同的用户启动纱线服务。 或者
- 在 hadoop 配置的 hadoop-env.sh 中指定了 HDFS_NAMENODE_USER 和 HDFS_DATANODE_USER 用户是其他的。
因此我们需要更正并使其在每个地方保持一致。所以这个问题的一个简单的解决方案是编辑你的 hadoop-env.sh
文件并添加你想要启动 yarn 服务的用户名。因此,继续编辑 $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 服务并检查它是否工作。
- 检查您的 pdsh 默认 rcmd rsh
pdsh -q -w localhost -- 应该得到这样的东西
-- DSH-specific 选项 -- 分开 stderr/stdout 是 cmd none 前面的路径 附加到 cmd none 命令:none 完整的程序路径名 /usr/bin/pdsh 远程程序路径/usr/bin/pdsh
-- 通用选项 -- 本地用户名 enock 本地 uid 1000 远程用户名enock Rcmd 类型 rsh 一个 ^C 将杀死 pdsh 否 连接超时(秒)10 命令超时(秒)0 扇出 32 显示主机名标签 是 调试否
-- 目标节点 -- 本地主机
- 修改pdsh默认rcmd。将 pdsh 添加到 bashrc 纳米~/.bashrc -- 在末尾添加这一行 导出 PDSH_RCMD_TYPE=ssh - 更新 来源 ~/.bashrc
这应该可以解决您的问题
C。 sbin/start-dfs.sh