spark on yarn運行產生jar包沖突問題


1.1 問題描述

Spark Streaming程序解析protobuf序列化的數據時,--jars 來添加依賴的protobuf-java-3.0.0.jar包,使用local模式程序正常,使用yarn模式時會報找不到方法的錯誤,如下所示:

image.png

1.2 解決方法

分析local模式能運行,yarn模式不能運行的原因是,用戶提交的protobuf-java-3.0.0.jar與SPARK_HOME/lib下的protobuf-java-2.5.0.jar沖突了,默認會優先加載SPARK_HOME/lib下的jar,而不是你程序的jar,所以會發生“ NoSuchMethodError”。

解決方法:提交參數添加 --conf spark.executor.extraClassPath=$user_jars

如下圖所示,注意protobuf-java-3.0.0.jar包要分發到所有節點

image.png

此類問題相關參數總結:

屬性名稱 默認值 含義
spark.driver.extraClassPath (none) 附加到driver的classpath的額外的classpath實體。這個設置存在的主要目的是Spark與舊版本的向后兼容問題。用戶一般不用設置這個選項
spark.executor.extraClassPath (none) 附加到executors的classpath的額外的classpath實體。這個設置存在的主要目的是Spark與舊版本的向后兼容問題。用戶一般不用設置這個選項
spark.driver.userClassPathFirst false 實驗性)當在driver中加載類時,是否用戶添加的jar比Spark自己的jar, 優先級高。這個屬性可以降低Spark依賴和用戶依賴的沖突。它現在還是一個實驗性的特征。
spark.executor.userClassPathFirst false 實驗性)當在executor中加載類時,是否用戶添加的jar比Spark自己的jar優先級高。這個屬性可以降低Spark依賴和用戶依賴的沖突。它現在還是一個實驗性的特征。

訂閱關注微信公眾號《大數據技術進階》,及時獲取更多大數據架構和應用相關技術文章!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM