首先需要修改配置文件spark-env.sh。在这个文件中需要添加两个属性:

Export HADOOP_HOME=/../hadoop..

ExportHADOOP_CONF_DIR=/../hadoop/etc/hadoop

这里,一个是要hadoop的home目录。一个是配置文件目录。

还需要配置一个就是spark-defaults.conf这个文件:

需要修改红色框内的文件。下面看下这个文件里面的内容:

在spark的源文件中给出了一些配置参数的示例。另外它还下面一个可以配置的属性

属性名

说明

默认值

spark.yarn.applicationMaster.waitTries

RM等待Spark AppMaster启动次数,也就是SparkContext初始化次数。超过这个数值,启动失败。

10

spark.yarn.submit.file.replication

应用程序上载到HDFS的文件的复制因子

3

spark.yarn.preserve.staging.files

设置为true,在job结束后,将stage相关的文件保留而不是删除。

false

spark.yarn.scheduler.heartbeat.interval-ms

Spark AppMaster发送心跳信息给YARN RM的时间间隔

5000

spark.yarn.max.executor.failures

导致应用程序宣告失败的最大executor失败数

2倍于executor数

spark.yarn.historyServer.address

Spark history server的地址(不要加http://)。这个地址会在应用程序完成后提交给YARN RM,使得将信息从RM UI连接到history server UI上。

还有更多的配置内容参考http://blog.csdn.net/book_mmicky/article/details/29472439。这里不一一列举。

运行流程

下面是Spark On Yarn的流程图:

上图比较只管的看到到了流程,下面具体看几个源码

Client

在Client类中的main方法实例话Client:new Client(args, sparkConf).run()。在run方法中,又调用了val appId = runApp()方法。runApp()源码如下:

def runApp() = {

validateArgs()

init(yarnConf)

start()

logClusterResourceDetails()

val newApp = super.getNewApplication()

val appId = newApp.getApplicationId()

verifyClusterResources(newApp)

val appContext = createApplicationSubmissionContext(appId)

val appStagingDir = getAppStagingDir(appId)

val localResources = prepareLocalResources(appStagingDir)

val env = setupLaunchEnv(localResources, appStagingDir)

val amContainer = createContainerLaunchContext(newApp, localResources, env)

val capability = Records.newRecord(classOf[Resource]).asInstanceOf[Resource]

// Memory for the ApplicationMaster.

capability.setMemory(args.amMemory + memoryOverhead)

amContainer.setResource(capability)

appContext.setQueue(args.amQueue)

appContext.setAMContainerSpec(amContainer)

appContext.setUser(UserGroupInformation.getCurrentUser().getShortUserName())

submitApp(appContext)

appId

}

1)这里首先对一些参数配置的校验,然后初始化、启动Client

2)提交请求到ResouceManager,检查集群的内存情况。

3)设置一些参数,请求队列

4)正式提交APP

ApplicationManager

AM负责运行Spark Application的Driver程序,并分配执行需要的Executors。里面也有个main方法实例化AM并调用run,源码如下:

转载于:https://www.cnblogs.com/huwf/p/4273370.html

Spark源码走读10——Spark On Yarn相关推荐

  1. spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析

    spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析 TransportContext 首先官方文档对Transpor ...

  2. Apache Spark源码走读之16 -- spark repl实现详解

    欢迎转载,转载请注明出处,徽沪一郎. 概要 之所以对spark shell的内部实现产生兴趣全部缘于好奇代码的编译加载过程,scala是需要编译才能执行的语言,但提供的scala repl可以实现代码 ...

  3. Apache Spark源码走读之6 -- 存储子系统分析

    Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk,本文尝试分析Spark中存储子系统的构成,并以数据写入和数据读取为例,讲述清楚存储子系统中各部件的交互 ...

  4. Spark源码走读1——RDD

    RDD全称Resilient Distributed DataSets,弹性的分布式数据集.是Spark的核心内容. RDD是只读的,不可变的数据集,也拥有很好的容错机制.他有5个主要特性 -A li ...

  5. Spark源码走读概述

    Spark代码量 --Spark:20000loc --Hadoop 1.0:90000loc --Hadoop 2.0:220000loc Spark生态系统代码量 Spark生态系统 概述 --构 ...

  6. Apache Spark源码走读(九)如何进行代码跟读使用Intellij idea调试Spark源码

    <一>如何进行代码跟读 概要 今天不谈Spark中什么复杂的技术实现,只稍为聊聊如何进行代码跟读.众所周知,Spark使用scala进行开发,由于scala有众多的语法糖,很多时候代码跟着 ...

  7. Apache Spark源码走读之3 -- Task运行期之函数调用关系分析

    概要 本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚运行着的task其输入的数据从哪获取,处理的结果返回到哪里,如何返回. 准备 spark已经安装完毕 ...

  8. Spark源码阅读(五) --- Spark的支持的join方式以及join策略

    版本变动 2021-08-30 增加了对Broadcast Hash Join小表大小的评估内容 增加了对Sort Merge Join优于Shuffle Hash Join调用的解释 目录 Spar ...

  9. Apache Spark源码走读之8 -- Spark on Yarn

    欢迎转载,转载请注明出处,徽沪一郎. 概要 Hadoop2中的Yarn是一个分布式计算资源的管理平台,由于其有极好的模型抽象,非常有可能成为分布式计算资源管理的事实标准.其主要职责将是分布式计算集群的 ...

最新文章

  1. mediawiki java api_维基百科 MediaWiki API 解析
  2. 电商促销类插画素材,适合各种活动banner设计
  3. flex布局最后一行左对齐的处理
  4. mysql多数据库_mysql 多端口及主从数据库
  5. Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
  6. Drool的LHS和RHS
  7. java 传智播客 毕向东_传智播客,毕向东Java详细基础教程下载
  8. iTunes安装不了怎么办(win7安装iTunes)..
  9. 山西省行政村边界数据/乡镇街道边界数据/行政区划边界分布
  10. PyTorch 单机多GPU 训练方法与原理整理
  11. 小程序容器对政务服务平台建设的帮助
  12. http://www.cnblogs.com/dolphin0520/p/3923167.html
  13. 【实践】人体红外传感器
  14. 试题 历届真题 大胖子走迷宫【第十届】【决赛】【C组】
  15. java 运算顺序 从左到右_Java表达式在进行运算时,同级运算符按从右至左的方向进行。 (5.0分)_学小易找答案...
  16. C++循环语句之在0-1000之间找出水仙花数。
  17. javascript(js)中使用BigDecimal
  18. 招聘笔试中常考的智力题(转自网络)
  19. java守护线程与非守护线程
  20. Revit二开-设备连接(以消火栓为例)

热门文章

  1. 澳大利亚新南威尔士大学 巩东博士 招收若干名计算机视觉和机器学习方向PhD...
  2. CVPR 2022 | 针对目标检测的重点与全局知识蒸馏(FGD)
  3. ICCV2021 | 南洋理工大学、港中大提出Talk-to-Edit,对话实现高细粒度人脸编辑
  4. 免费算力提供!这个含YOLOv3算法讲解的深度学习课程来了
  5. 年薪十万的王者荣耀,LOL游戏模型师的工作是这样的|附50G资料
  6. 白嫖GPU!Kaggle大神带你打比赛!
  7. 收藏 | TinaFace:人脸检测新纪录
  8. 还在修改博士论文?这份《博士论文写作技巧》为你指南
  9. 最新《机器学习最优化》课程笔记,38页pdf,Optimization for Machine Learning
  10. 收藏 | 彻底搞懂机器学习中的正则化