缓存jar包来提升spark on Yarn job的提交速度

来源:互联网 发布:手残大联盟2杀人网络 编辑:程序博客网 时间:2024/06/04 23:20

之前一直使用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包的绝对路径

    spark.yarn.jar hdfs://namenode_host:9000/spark-libs/spark-assembly-1.6.0-hadoop2.6.0.jar

配置完成后,再次提交job发现不再需要上传spark assembly:
2015-12-30 17:13:43,801 [main] INFO org.apache.spark.deploy.yarn.Client(59) - Source and destination file systems are the same. Not copying hdfs://bsaCluster/spark-lib/spark-assembly-1.3.0-hadoop2.4.0.jar

job submit速度加快了好几秒。

0 0