Error: Could not find or load main class resourcemanager

之前启动都没有问题,今天启动报错了

[root@hadoop001 hadoop-2.7.1]# sbin/hadoop-daemon.sh start resourcemanager
starting resourcemanager, logging to /opt/software/hadoop-2.7.1/logs/hadoop-root-resourcemanager-hadoop001.out
Error: Could not find or load main class resourcemanager
[root@hadoop001 hadoop-2.7.1]# jps
1282 DataNode
1421 Jps
1182 NameNode
[root@hadoop001 hadoop-2.7.1]# sbin/hadoop-daemon.sh start nodemanager
starting nodemanager, logging to /opt/software/hadoop-2.7.1/logs/hadoop-root-nodemanager-hadoop001.out
Error: Could not find or load main class nodemanager

经过仔细分析,原来是自己的启动的文件选择错了,顺手写成了hadoop-daemon.sh,而实际上是yarn-daemon.sh

[root@hadoop001 hadoop-2.7.1]# sbin/yarn-daemon.sh start resourcemanager
starting resourcemanager, logging to /opt/software/hadoop-2.7.1/logs/yarn-root-resourcemanager-hadoop001.out
[root@hadoop001 hadoop-2.7.1]# jps
1282 DataNode
1812 Jps
1590 ResourceManager
1182 NameNode
[root@hadoop001 hadoop-2.7.1]# sbin/yarn-daemon.sh start nodemanager
starting nodemanager, logging to /opt/software/hadoop-2.7.1/logs/yarn-root-nodemanager-hadoop001.out
[root@hadoop001 hadoop-2.7.1]# jps
1282 DataNode
1590 ResourceManager
1847 NodeManager
1977 Jps
1182 NameNode

怪不得自己的会启动不了

<think>好的,我现在需要解决用户遇到的“ERROR: Cannot set priority of ResourceManager process 18467”问题。首先,我得理解这个错误的原因。根据引用[2]中的类似错误,启动Hadoop集群时出现设置进程优先级失败的情况,用户提到了namenode进程的问题,而现在是ResourceManager进程的问题,可能原因类似。 首先,进程优先级设置通常需要管理员权限。在Linux系统中,调整进程的优先级通常通过nice或renice命令,而这些操作可能需要root权限。如果Hadoop尝试以非root用户运行并试图调整优先级,可能会失败。所以,用户可能没有足够的权限,或者Hadoop配置中有关优先级设置的部分需要调整。 接下来,我需要检查Hadoop的相关配置。在Hadoop的配置文件如yarn-site.xml中,可能存在与进程优先级相关的参数。例如,yarn.resourcemanager.process.优先级之类的设置,如果这些参数被错误配置,可能会导致此问题。用户需要检查这些配置项是否正确,或者是否应该被注释掉。 另外,SELinux或AppArmor等安全模块可能会限制进程的权限,导致无法调整优先级。用户可能需要暂时禁用这些安全模块,或者调整策略以允许Hadoop进程进行此类操作。不过,禁用安全模块可能会带来安全风险,所以需要谨慎处理。 还有一种可能是Hadoop版本本身存在bug。查看Hadoop的官方文档或问题追踪系统,看看是否有已知的与此错误相关的问题,并确认是否有可用的补丁或升级版本。用户可以考虑升级Hadoop到最新稳定版本来解决这个问题。 此外,查看具体的日志文件非常重要。用户应该检查ResourceManager的日志(如yarn-root-resourcemanager-*.log),寻找更详细的错误信息。日志中的堆栈跟踪或更具体的错误描述可以帮助进一步定位问题。例如,是否有权限被拒绝的消息,或者配置参数解析错误等。 最后,如果调整优先级不是必须的,用户可以选择在配置中禁用相关设置。例如,在yarn-site.xml中将yarn.resourcemanager.process.priority调整为一个不要求特权操作的值,或者完全禁用优先级调整功能。这可以避免触发权限问题,从而解决错误。 总结下来,解决步骤可能包括检查权限、调整配置、处理安全模块、升级Hadoop版本以及查看详细日志。需要一步步排查,找到具体原因后采取相应措施。</think>针对“ERROR: Cannot set priority of ResourceManager process 18467”错误,以下是系统化的解决方案: ### 1. **权限问题排查** - **root权限验证** 在Linux系统中,调整进程优先级需要`CAP_SYS_NICE`权限或root用户身份。若Hadoop以普通用户启动,尝试切换为root用户执行命令: ```bash sudo -i start-yarn.sh ``` 若成功,则需在Hadoop配置中永久添加权限或调整系统权限[^2]。 - **配置用户权限组** 将当前用户加入`/etc/security/limits.conf`的优先级调整白名单: ```conf hadoop_user - nice -10 ``` ### 2. **Hadoop配置调整** - **修改`yarn-site.xml`** 检查是否包含以下参数,若存在则注释或删除: ```xml <property> <name>yarn.resourcemanager.process.priority</name> <value>5</value> <!-- 优先级数值范围通常为-20到19 --> </property> ``` 保存后重启ResourceManager: ```bash yarn --daemon stop resourcemanager yarn --daemon start resourcemanager ``` ### 3. **安全模块限制处理** - **临时禁用SELinux** ```bash setenforce 0 ``` 若错误消失,需永久关闭或添加SELinux策略: ```bash sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config ``` ### 4. **Hadoop版本兼容性** - **升级Hadoop版本** 某些Hadoop 3.x版本存在优先级设置模块的兼容性问题。通过官网下载最新稳定版并替换旧版本: ```bash wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz tar -xzvf hadoop-3.3.6.tar.gz ``` ### 5. **日志深度分析** - **定位错误上下文** 查看ResourceManager日志(路径:`$HADOOP_HOME/logs/yarn-*-resourcemanager-*.log`),搜索关键词`setPriority`或`ERROR`,例如: ```log 2024-02-15 10:00:00 ERROR impl.ResourceManager:74 - Failed to set priority: java.lang.UnsupportedOperationException at java.lang.ProcessHandleImpl.setPriority(ProcessHandleImpl.java:200) ``` 此类日志表明JDK版本不支持进程优先级调整,需降级JDK至8u252或更低版本。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值