You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级HDP 2.6.5后部分节点Yarn无法启动Application Master

问题根源与解决方案

这个java.lang.NoSuchMethodError的核心原因是集群节点间Hadoop YARN相关Jar包版本不一致,具体来说是YarnProtos$ResourceProtoOrBuilder.getMemory()这个方法的签名或存在性在不同Hadoop版本中发生了变化——HDP 2.6.5对应的Hadoop版本是2.7.3,而报错的节点大概率残留了更低版本的YARN protobuf相关Jar,导致类加载时找不到正确的方法实现。

结合你描述的"3个节点中2个报错、1个正常"的现象,说明这两个节点的YARN/Spark类路径存在旧版本依赖,下面是具体的排查和修复步骤:

1. 确认所有节点的HDP组件版本一致

在每个节点上执行以下命令,检查组件版本:

hdp-select status

重点确认hadoop-yarn-nodemanager、hadoop-yarn-resourcemanager、spark2-client这些组件的版本都是2.6.5.x-x(具体版本号根据你的HDP安装包而定)。如果某个节点的组件版本不对,重新运行HDP升级流程,确保该节点的所有依赖包都被正确更新。

2. 检查YARN类路径中的Jar包合法性

在报错节点上执行yarn classpath,查看输出中的关键Jar包路径:

  • 找到yarn-api.jar、yarn-common.jar、hadoop-common.jar这几个Jar的位置,确认它们都来自HDP2.6.5的安装目录(比如/usr/hdp/2.6.5.x-x/hadoop-yarn/、/usr/hdp/2.6.5.x-x/hadoop-common/)。
  • 如果发现输出中有旧版本的HDP目录(比如/usr/hdp/2.5.x-x/)或者自定义Hadoop目录(比如/usr/local/hadoop),说明环境变量或YARN配置引入了旧依赖:
    • 检查用户的~/.bashrc和系统的/etc/profile,确认HADOOP_HOME、YARN_HOME都指向HDP2.6.5的正确路径。
    • 打开YARN的配置文件/etc/hadoop/conf/yarn-env.sh,检查YARN_CLASSPATH变量,移除所有指向旧版本Jar的配置项。

3. 确保Spark的Hadoop依赖配置正确

对于Spark2,检查以下配置:

  • 打开/etc/spark2/conf/spark-env.sh,确认SPARK_DIST_CLASSPATH是动态获取Hadoop类路径的:
    export SPARK_DIST_CLASSPATH=$(hadoop classpath)
    
    避免硬编码旧版本的Hadoop路径。
  • 查看/etc/spark2/conf/spark-defaults.conf中的spark.yarn.jars配置,确保它指向的是HDP2.6.5的Spark和Hadoop Jar包,没有引用旧版本资源。

4. 清理缓存并重启服务

在报错节点上执行以下操作:

# 清理YARN缓存目录
rm -rf /var/log/hadoop-yarn/cache/*
# 清理Spark临时文件
rm -rf /tmp/spark-*
# 重启YARN和Spark相关服务
sudo systemctl restart hadoop-yarn-nodemanager
sudo systemctl restart spark2-client

如果你的集群是用Ambari管理的,也可以通过Ambari界面重启对应的服务,确保配置生效。

5. 验证修复效果

重新运行你的测试脚本,分别测试cluster和client部署模式:

/usr/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--name 'test script' \
/opt/test/youdmp/test/script.py

如果所有节点都能正常运行,说明问题已经解决。


内容的提问来源于stack exchange,提问作者skarpov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:44:09