YARN查看和切换ResourceManager的状态_查看resourcemanager状态(2)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

master2


yarn.resourcemanager.webapp.address.rm1
master1:8088


yarn.resourcemanager.webapp.address.rm2
master2:8088


hadoop.zk.address
zk1:2181,zk2:2181,zk3:2181


从XML配置中可以看到两个RM的ID,我们可以使用下面的命令根据该ID获取它们的状态:



#获取rm1的节点状态
yarn rmadmin -getServiceState rm1

active

#获取rm2的节点状态
yarn rmadmin -getServiceState rm2

standby

#获取所有RM节点的状态
yarn rmadmin -getAllServiceState

rm2 standby
rm1 active


使用下面的命令可以检查RM的健康情况,当出现问题时会返回0以外的状态码:



#检查RM节点健康情况
yarn rmadmin -checkHealth

#使用$?获取上一个命令的返回状态,返回0表示健康,否则不健康
echo $?


 同样,我们也可以手动的切换这两个RM的状态:



#手动将 rm1 的状态切换到STANDBY
yarn rmadmin -transitionToStandby rm1

#手动将 rm2 的状态切换到ACTIVE
yarn rmadmin -transitionToActive rm2


当YARN的HA配置中开启了自动故障转移(*yarn.resourcemanager.ha.automatic-failover.enabled*)时,上面的命令不可用,此时可以加上*-forcemanual* 参数令其可用(谨慎使用此参数)。



#手动将 rm1 的状态切换到STANDBY
yarn rmadmin -transitionToStandby -forcemanual rm1

#手动将 rm2 的状态切换到ACTIVE
yarn rmadmin -transitionToActive -forcemanual rm2


当手动的切换到ACTIVE状态时,YARN会检查当前是否有ACTIVE的RM,这样做是为了避免出现脑裂的情况。如果想要强制切换ACTIVE状态时不检查当前是否有存活的RM可以使用*-forceactive* 参数(谨慎使用此参数)。



#手动将 rm2 的状态切换到ACTIVE,且不检查RM状态
yarn rmadmin -transitionToActive -forceactive -forcemanual rm2


例:


![](https://img-blog.csdnimg.cn/20200907113353814.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dzZGMwNTIx,size_16,color_FFFFFF,t_70)


 



![img](https://img-blog.csdnimg.cn/img_convert/be34d71f595767b5186253c4e246dedf.png)
![img](https://img-blog.csdnimg.cn/img_convert/3d3a99d3962fe5dcb22bebb7afc81dd7.png)
![img](https://img-blog.csdnimg.cn/img_convert/fc78d6f0d7a04c20c9858f60b1892582.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**

经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**

<think>好的,我现在需要帮助用户解决一个关于Hadoop YARN的错误:“RROR: but there' is no YARN_RESOURCEMANAGER_USER defined.”。首先,我需要确认用户提到的错误信息中的拼写是否有误,比如“RROR”可能应该是“ERROR”,而“there'”可能是“there's”或者“there is”。不过这可能只是用户输入时的笔误,实际错误信息应该是“ERROR: but there is no YARN_RESOURCEMANAGER_USER defined.”。 接下来,我需要思考这个错误通常发生在什么情况下。Hadoop在启动服务时,比如YARN ResourceManager,需要使用特定的系统用户来运行这些服务,这些用户需要在环境中定义。在Hadoop的配置文件中,通常需要设置诸如YARN_RESOURCEMANAGER_USER、YARN_NODEMANAGER_USER等环境变量。如果这些变量没有正确设置,启动服务时就会报错。 可能的错误原因有几个:首先,用户可能在运行启动脚本(比如start-yarn.sh)之前没有正确设置这些环境变量。其次,用户可能没有以正确的用户权限运行脚本,或者配置文件(如yarn-env.sh)中没有定义这些变量。此外,Hadoop版本的不同也可能影响配置的方式,比如在较新的版本中可能需要显式设置这些用户变量。 接下来,我需要考虑如何逐步解决这个问题。首先,建议用户检查相关的配置文件,比如$HADOOP_HOME/etc/hadoop/yarn-env.sh,确认其中是否定义了YARN_RESOURCEMANAGER_USER其他相关变量。如果没有,用户需要添加这些变量的定义,并确保使用的用户名在系统中存在,且当前用户有权限切换到这些用户。 然后,用户可能需要以root权限运行启动脚本,或者在sudoers文件中配置免密码切换用户的权限,避免输入密码。此外,如果用户使用的是较新的Hadoop版本,可能需要参考官方文档,确认是否有其他配置步骤被遗漏。 另外,用户可能会遇到环境变量未正确加载的问题,比如在运行脚本时没有source相应的配置文件,导致变量未被识别。此时,用户需要确保在执行启动命令前,正确加载了所有必要的环境变量。 最后,如果问题仍然存在,建议用户查看详细的日志文件,通常位于$HADOOP_HOME/logs目录下,以获取更具体的错误信息,从而进一步诊断问题。 总结来说,解决步骤包括:检查并设置环境变量、确保用户权限正确、以正确权限运行脚本、验证配置文件查看日志。需要将这些步骤用清晰的中文解释给用户,避免使用专业术语过多,确保用户能够逐步操作解决问题。</think>这个错误通常出现在使用Hadoop YARN时未正确配置环境变量。以下是分步解决方案: **错误原因分析** $$ YARN\_RESOURCEMANAGER\_USER \notin \text{Environment Variables} $$ 即YARN启动时找不到资源管理器的用户身份定义 **解决方法** 1. 编辑YARN环境配置文件 ```bash vim $HADOOP_HOME/etc/hadoop/yarn-env.sh ``` 2. 添加以下定义(需root权限) ```bash export YARN_RESOURCEMANAGER_USER=root # 根据实际用户修改 export YARN_NODEMANAGER_USER=root # 需与RM用户保持一致 ``` 3. 验证系统用户存在 $$ \exists\ \text{user}\ \in\ /etc/passwd\ |\ \text{user.name} = \text{YARN\_RESOURCEMANAGER\_USER} $$ 若不存在需先创建: ```bash useradd <username> ``` 4. 配置sudo免密(非必需但推荐) ```bash visudo # 添加以下内容 <username> ALL=(ALL) NOPASSWD: ALL ``` 5. 重新启动YARN服务 ```bash stop-yarn.sh && start-yarn.sh ``` **补充说明** - 该问题常见于Hadoop 3.x+版本,旧版本可能自动使用当前用户 - 若使用非root用户,需确保该用户有访问Hadoop目录的权限 $$ \text{chmod} -R 755 \ /path/to/hadoop $$ - 查看详细日志定位问题: ```bash tail -f $HADOOP_HOME/logs/yarn-*-resourcemanager-*.log ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值