关于Class org.apache.spark.network.yarn.YarnShuffleService not found的解决办法

本文解决了一个关于Hadoop和HBase启动时nodemanager节点无法正常运行的问题。通过调整配置文件、复制必需的jar文件及清理相关目录,最终解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在启动Hadoop和Hbase之后,发现nodemanager节点并未启动起来,于是对Hadoop进行初始化并启动,但发现启动Hadoop的时候节点正常,但在启动hbase之后,nodemanager节点依然会挂掉。反复试验并重启虚拟机之后问题依然存在。在察看hadoop的日志错误报告后,在yarn-root-nodemanager-hy.log中找到相应报错信息:java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.spark.network.yarn.YarnShuffleService not found

在查找相应资料后,发现解决办法如下:

1.修改${HADOOP_HOME}/etc/hadoop/yarn-site.xml中关于spark的参数时候,将<value>mapreduce_shuffle</value>更换为:<value>mapreduce_shuffle,spark_shuffle</value>,并添加:

<property>

<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>

<value>org.apache.spark.network.yarn.YarnShuffleService</value>

</property>

<property>
<name>spark.shuffle.service.port</name>
<value>7337</value>
</property>

2.拷贝“${SPARK_HOME}/lib/spark-2.2.0-yarn-shuffle.jar”到“${HADOOP_HOME}/share/hadoop/yarn/lib/”目录下。(注意:不是${HADOOP_HOME}下的lib目录,我在第一次复制的时候就搞错了)

3.删除{HADOOP_HOME}下的dfs、logs、tmp目录并初始化重启hadoop。问题解决


这个错误是关于 Hadoop YARN 中的辅助服务(Auxiliary Services)初始化失败的问题。根据错误信息,发生了两个异常:`java.lang.RuntimeException` 和 `java.lang.ClassNotFoundException`。 首先,`java.lang.RuntimeException` 表示在初始化辅助服务时出现了一个运行时异常。其次,`java.lang.ClassNotFoundException` 表示找不到类 `org.apache.spark.network.yarn.YarnShuffleService`。 这个错误通常发生在 Spark Shuffle 服务配置不正确或 Spark Shuffle 相关的类路径设置有问题的情况下。 要解决这个问题,您可以尝试以下几个步骤: 1. 确保您的环境中已正确安装和配置了 Spark,并且 Spark 相关的 JAR 文件在您的应用程序或 Hadoop 的类路径中可用。 2. 检查您的配置文件,确保在 YARN 的配置中包含了正确的 Spark Shuffle 服务配置。您可以参考 Spark 和 Hadoop 的官方文档以了解正确的配置方式。 3. 确保在 YARN 的 `yarn-site.xml` 配置文件中正确设置了 Spark Shuffle 服务的类路径。您可以检查 `yarn.nodemanager.aux-services` 和 `yarn.nodemanager.aux-services.spark_shuffle.class` 这两个属性的设置。 4. 如果您使用的是自定义的 Spark Shuffle 服务实现,确保相关的 JAR 文件已正确放置在 YARN 的类路径中。 请注意,具体解决方案可能因您的环境和配置而异。如果问题仍然存在,您可以查看 Hadoop 和 Spark 的官方文档、社区支持资源以及相关错误日志,以获取更多关于此错误的详细信息和解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值