MAPREDUCE服务 MRS-运行SparkStreamingKafka样例工程时报“类不存在”问题:回答

时间:2024-06-19 14:14:15

回答

Spark部署时,如下jar包存放在客户端的“$SPARK_HOME/jars/streamingClient”目录以及服务端的“/opt/Bigdata/ MRS / FusionInsight -Spark-2.2.1/spark/jars/streamingClient”目录:

  • kafka-clients-0.8.2.1.jar
  • kafka_2.10-0.8.2.1.jar
  • spark-streaming-kafka_2.10-1.5.1.jar

由于$SPARK_HOME/lib/streamingClient/*默认没有添加到classpath,所以需要手动配置。

在提交应用程序运行时,在命令中添加如下参数即可:

--jars $SPARK_CLIENT_HOME/jars/streamingClient/kafka-clients-0.8.2.1.jar,$SPARK_CLIENT_HOME/jars/streamingClient/kafka_2.10-0.8.2.1.jar,$SPARK_CLIENT_HOME/jars/streamingClient/park-streaming-kafka_2.10-1.5.1.jar

用户自己开发的应用程序以及样例工程都支持上述参数。

但是Spark开源社区提供的KafkaWordCount等样例程序,不仅需要添加--jars参数,还需要配置其他,否则会报“ClassNotFoundException”错误,yarn-client和yarn-cluster模式下稍有不同。

  • yarn-client模式下

    在除--jars参数外,在客户端“spark-defaults.conf”配置文件中,将“spark.driver.extraClassPath”参数值中添加客户端依赖包路径,如“$SPARK_HOME/lib/streamingClient/*”

  • yarn-cluster模式下

    除--jars参数外,还需要配置其他,有三种方法任选其一即可,具体如下。

    • 在客户端spark-defaults.conf配置文件中,在“spark.yarn.cluster.driver.extraClassPath”参数值中添加服务端的依赖包路径,如“/opt/huawei/Bigdata/FusionInsight/spark/spark/lib/streamingClient/*”
    • 将各服务端节点的“spark-examples_2.10-1.5.1.jar”包删除。
    • 在客户端“spark-defaults.conf”配置文件中,修改或增加配置选项“spark.driver.userClassPathFirst = true”
support.huaweicloud.com/devg-mrs/mrs_06_0248.html