启动hadoop集群时报错ERROR: Attempting to operate on hdfs namenode as root

2023-12-07 10:20

本文主要是介绍启动hadoop集群时报错ERROR: Attempting to operate on hdfs namenode as root,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


问题描述

安装搭建了hadoop集群,然后启动时报错,错误如下:

[root@hadoop101 ~]# /opt/module/hadoop/hadoop-3.1.3/sbin/start-dfs.sh
Starting namenodes on [hadoop101]
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 [hadoop103]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

[root@hadoop102 ~]# /opt/module/hadoop/hadoop-3.1.3/sbin/start-yarn.sh
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.


原因分析:

这个涉及到hadoop的安全机制问题,错误原因是你正在以root用户身份尝试启动Hadoop服务,但是在环境变量中没有定义Hadoop相关服务的用户。Hadoop通常不建议以root用户身份来启动服务,因为这可能会导致安全漏洞。如果以普通用户来启动就不会报这个错误。


解决方案:

1. 方法一:复制粘贴以下命令添加环境变量

echo >> ~/.bashrc
echo 'export HDFS_NAMENODE_USER=root' >> ~/.bashrc
echo 'export HDFS_DATANODE_USER=root' >> ~/.bashrc
echo 'export HDFS_SECONDARYNAMENODE_USER=root' >> ~/.bashrc
echo 'export YARN_RESOURCEMANAGER_USER=root' >> ~/.bashrc
echo 'export YARN_NODEMANAGER_USER=root' >> ~/.bashrc
source ~/.bashrc

然后分别使用ssh命令链接到其他两个节点执行这个命令

ssh root@hadoop102
echo >> ~/.bashrc
echo 'export HDFS_NAMENODE_USER=root' >> ~/.bashrc
echo 'export HDFS_DATANODE_USER=root' >> ~/.bashrc
echo 'export HDFS_SECONDARYNAMENODE_USER=root' >> ~/.bashrc
echo 'export YARN_RESOURCEMANAGER_USER=root' >> ~/.bashrc
echo 'export YARN_NODEMANAGER_USER=root' >> ~/.bashrc
source ~/.bashrc
sleep 1
exit
ssh root@hadoop103
echo >> ~/.bashrc
echo 'export HDFS_NAMENODE_USER=root' >> ~/.bashrc
echo 'export HDFS_DATANODE_USER=root' >> ~/.bashrc
echo 'export HDFS_SECONDARYNAMENODE_USER=root' >> ~/.bashrc
echo 'export YARN_RESOURCEMANAGER_USER=root' >> ~/.bashrc
echo 'export YARN_NODEMANAGER_USER=root' >> ~/.bashrc
source ~/.bashrc
sleep 1
exit

2. 方法二:手动复制以下代码添加到~/.bashrc文件中

编辑文件:

vim ~/.bashrc

添加代码:

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 ~/.bashrc

然后再分别使用ssh命令切换到其他两个节点重复以上操作。

这篇关于启动hadoop集群时报错ERROR: Attempting to operate on hdfs namenode as root的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/465494

相关文章

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-