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上,如图所示:
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
详见如图:
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
优化完成的效果如图:
参考资料:
[1] Spark On Yarn中spark.yarn.jar属性的使用
http://www.cnblogs.com/luogankun/p/4191796.html
[2] Spark on yarn 文档
http://spark.apache.org/docs/latest/running-on-yarn.html