Spark2.1.1<性能调优Spark运行时jar从yarn端访问>

1.为什么要让运行时Jar可以从yarn端访问

spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-*.jar已经不存在

每一次我们运行的时候,如果没有指定
spark.yarn.archive or spark.yarn.jars
Spark将在安装路径下的Jar目录,将其所有的Jar包打包然后将其上传到分布式缓存(官网上的原话是:To make Spark runtime jars accessible from YARN side, you can specify spark.yarn.archive or spark.yarn.jars. For details please refer to Spark Properties. If neither spark.yarn.archive nor spark.yarn.jars is specified, Spark will create a zip file with all jars under $SPARK_HOME/jars and upload it to the distributed cache.

这里以简单地写了一个wordcount.scala为例,将其打包然后部署到Spark集群上运行

object WordCount {
  def main(args: Array[String]): Unit = {
    if (args.length != 2)
      println("AppName  +   FilePath")
    val conf = new SparkConf()
      //      .setMaster("local[4]")
      .setAppName(args(0))
    val sc = new SparkContext(conf)
    val lines = sc.textFile(args(1))
    val flatRDD = lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).collect.foreach(println)
  }
}

观察日志:
这里写图片描述

yarn.Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.

大致的意思说找不到spark.yarn.jars nor spark.yarn.archive,回到spark安装目录上传运行时的Jar包

观察一下SparkUI,这里以collect为例子

这里写图片描述

点进去。观察他的Scheduler Delay
这里写图片描述

可以看到Scheduler Delay=557-457=100

2.调优办法

  • 首先将Spark安装路径下的所有jar包上传到HDFS上,我是上传到了/system/sparkJar/jars
    这里写图片描述
  • 接着在spark的conf目录下的spark-defaults.conf末尾添加上这一行
spark.yarn.jars hdfs://172.17.11.85:9000/system/sparkJar/jars/*.jar 

这里写图片描述

3.调优之后与调优之前的对比

  • 调优之后日志变化:
    这里写图片描述

可以看到它已经不用上传Spark运行时Jar包到分布式缓存中了

  • 看看UI

还是相同的界面:

这里写图片描述

还是看Scheduler Delay

发现Scheduler Delay=313-263=50

与调优之前时间整整缩短了一半,Scheduler Delay从100缩短到了50

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值