之前一直使用Spark standalone方式提交job,最近team换成了yarn方式,但发现在yarn上,提交job的速度比standalone慢的多;看提交的日志,发现其中有个很明显的东西,yarn会将spark-assembly-1.3.0-hadoop2.4.0.jar
上传到hdfs中,这个jar包有130M+,花费了好几秒的时间,其实可以将其缓存在hdfs上的,每次job提交时不再需要重新上传,只需复制jar包即可,job提交速度明显加快。
配置方法:
在hdfs上创建个jar包缓存目录,设置权限为755
bin/hdfs dfs -mkdir hdfs://namenode_host:9000/spark-libs/
bin/hdfs dfs -chmod 755 hdfs://namenode_host:9000/spark-libs/
将对应版本的spark-assembly包put到创建的缓存目录中
bin/hdfs dfs -put ~/spark-1.3.0-bin-hadoop2.4/lib/spark-assembly-1.6.0-hadoop2.6.0.jar
bin/hdfs dfs -chmod 755 hdfs://namenode_host:9000/spark-libs/spark-assembly-1.6.0-hadoop2.6.0.jar在
spark-default.conf
中设置spark.yarn.jar
指定到 hdfs中spark-assembly包的绝对路径s