解決spark streaming重複提交第三方jar包問題
阿新 • • 發佈:2018-12-30
背景:
由於spark streaming每次提交都需要上傳大量jar包到hdfs,為節約HDFS資源,現只存一份來解決這個問題
元件:
CDH 5.13 spark2.2.x
針對cluster模式
對於spark streaming而言,第三方jar包是一個值得探討的問題,相信大部分都是打的原始碼包,然後提交jar,想通過–jars $(echo sparklib0.10/*.jar | tr ’ ’ ‘,’) 這種方式,但這種方式有一個弊端就是每一個application都需要提交大量的jar包,
並且這些jar包有大部分是可以在多個application中公用的,故直接將這些公用jar傳到HDFS上,然後通過
--jars $(`echo hadoop fs -ls hdfs://nameservice1/sparklib010/*.jar` |awk {'print $8'}| tr '\n' ',')
來進行提交,
非公共部分,可繼續使用–jars來提交
--jars $(echo sparklib0.10/*.jar | tr ' ' ',')
整體上是這個樣子的
--jars $(`echo hadoop fs -ls hdfs://nameservice1/sparklib010/*.jar` |awk {'print $8'}| tr '\n' ',') --jars --jars $(echo sparklib0.10/*.jar | tr ' ' ',')
client模式
對於HDFS上的包,首次使用它會下載下來,然後在傳上去,用不用公共包自行定奪嘍