Spark调优-防止不必要的jar包上传与分发


每个Application都会上传一个spark-assembly-x.x.x-SNAPSHOT-hadoopx.x.x-cdhx.x.x.jar的jar包,影响HDFS的性能以及占用HDFS的空间


对于用户的jar包,有时候体积也非常庞大,我们同样的方式上传hdfs上,然后直接使用。


基于YARN模式验证


bin/spark-submit  --class  org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--num-executors 3 \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
lib/spark-examples*.jar 10



代码分发到hdfs上,如图所示:



Spark调优-防止不必要的jar包上传与分发_spark




1.2 优化方案


将系统jar包上传到hdfs上,直接使用hdfs上的文件,具体如下:


(1)修改conf/spark-default.conf添加以下配置


spark.yarn.jar hdfs://master:9000/system/spark/jars/spark-assembly-1.6.0-hadoop2.6.0.jar



(2)再次执行SparkPi,提交脚本发生了变化,如下:



bin/spark-submit  --class  org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--num-executors 3 \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
lib/spark-examples*.jar 10



详见如图:



Spark调优-防止不必要的jar包上传与分发_spark_02




1.3 用户的程序上传hdfs,避免重复分发


bin/spark-submit  --class  org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--num-executors 3 \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
hdfs://master:9000/user/spark/jars/spark-examples-1.6.0-hadoop2.6.0.jar 10



优化完成的效果如图:


Spark调优-防止不必要的jar包上传与分发_jar_03