spark on 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

原文地址:https://www.cnblogs.com/itboys/p/10041541.html

时间: 2024-11-13 22:26:59

spark on yarn任务提交缓慢解决的相关文章

Spark on Yarn:任务提交参数配置

当在YARN上运行Spark作业,每个Spark executor作为一个YARN容器运行.Spark可以使得多个Tasks在同一个容器里面运行. 以下参数配置为例子: spark-submit --master yarn-cluster   #使用集群调度模式(一般使用这个参数) --num-executors  132      # executor 数量 --executor-cores  2        #设置单个executor能并发执行task数,根据job设置,推荐值2-16 (

spark on yarn提交任务时一直显示ACCEPTED

spark on yarn提交任务时一直显示ACCEPTED,过一个小时后就会出现任务失败,但在提交时shell终端显示的日志并没有报错,logs文件夹中也没有日志产生.注:spark on yarn是不需要启动spark集群的,只需要在提交任务的机器配置spark就可以了,因为任务是由hadoop来执行的,spark只负责任务的提交. 任务提交命令为 bin/spark-submit --class org.apache.spark.examples.JavaWordCount\     --

spark on yarn运行产生缺jar包错误及解决办法

1.本地运行出错及解决办法 当运行如下命令时: ./bin/spark-submit --class org.apache.spark.examples.mllib.JavaALS --master local[*] /opt/cloudera/parcels/CDH-5.1.2-1.cdh5.1.2.p0.3/lib/hadoop-yarn/lib/spark-examples_2.10-1.0.0-cdh5.1.2.jar /user/data/netflix_rating 10 10 /u

spark基于yarn的两种提交模式

一.spark的三种提交模式 1.第一种,Spark内核架构,即standalone模式,基于Spark自己的Master-Worker集群. 2.第二种,基于YARN的yarn-cluster模式. 3.第三种,基于YARN的yarn-client模式. 如果,你要切换到第二种和第三种模式,在提交spark应用程序的spark-submit脚本加上--master参数,设置为yarn-cluster,或yarn-client,即可.如果没设置,那么,就是standalone模式. 一.基于YA

Spark记录-Spark on Yarn框架

一.客户端进行操作 1.根据yarnConf来初始化yarnClient,并启动yarnClient2.创建客户端Application,并获取Application的ID,进一步判断集群中的资源是否满足executor和ApplicationMaster申请的资源,如果不满足则抛出IllegalArgumentException:3.设置资源.环境变量:其中包括了设置Application的Staging目录.准备本地资源(jar文件.log4j.properties).设置Applicati

Oozie Spark on YARN requirement failed

软件环境: CDH:5.7.3:Oozie:4.1.0-CDH5.7.3 : Spark:1.6.0-cdh5.7.3-hadoop2.6.0-cdh5.7.3 : Hadoop:hadoop2.6.0-cdh5.7.3(HDFS 采用HA方式): 问题描述: 在使用CDH5.7.3版本的时候,发起一个Oozie工作流,该工作流使用Spark On YARN的方式提交一个Spark程序,但是在Oozie中该程序运行失败,同时找到YARN监控中对应的任务,发现出现下面的错误(该Spark任务如果使

Spark On YARN内存分配

本文转自:http://blog.javachen.com/2015/06/09/memory-in-spark-on-yarn.html?utm_source=tuicool 此文解决了Spark yarn-cluster模式运行时,内存不足的问题. Spark yarn-cluster模式运行时,注意yarn.app.mapreduce.am.resource.mb的设置.默认为1G Spark On YARN内存分配 本文主要了解Spark On YARN部署模式下的内存分配情况,因为没有

spark on yarn 安装笔记

yarn版本:hadoop2.7.0 spark版本:spark1.4.0 0.前期环境准备: jdk 1.8.0_45 hadoop2.7.0 Apache Maven 3.3.3 1.编译spark on yarn 下载地址:http://mirrors.cnnic.cn/apache/spark/spark-1.4.1/spark-1.4.1.tgz 解压后进入spark-1.4.1 执行如下命令,Setting up Maven’s Memory Usage export MAVEN_O

Spark on Yarn with Hive实战案例与常见问题解决

[TOC] 1 场景 在实际过程中,遇到这样的场景: 日志数据打到HDFS中,运维人员将HDFS的数据做ETL之后加载到hive中,之后需要使用Spark来对日志做分析处理,Spark的部署方式是Spark on Yarn的方式. 从场景来看,需要在我们的Spark程序中通过HiveContext来加载hive中的数据. 如果希望自己做测试,环境的配置可以参考我之前的文章,主要有下面的需要配置: 1.Hadoop环境 Hadoop环境的配置可以参考之前写的文章: 2.Spark环境 Spark环