背景:
由于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上的包,首次使用它会下载下来,然后在传上去,用不用公共包自行定夺喽
网友评论