Spark源码走读10——Spark On Yarn
首先需要修改配置文件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相关推荐
- spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析
spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析 TransportContext 首先官方文档对Transpor ...
- Apache Spark源码走读之16 -- spark repl实现详解
欢迎转载,转载请注明出处,徽沪一郎. 概要 之所以对spark shell的内部实现产生兴趣全部缘于好奇代码的编译加载过程,scala是需要编译才能执行的语言,但提供的scala repl可以实现代码 ...
- Apache Spark源码走读之6 -- 存储子系统分析
Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk,本文尝试分析Spark中存储子系统的构成,并以数据写入和数据读取为例,讲述清楚存储子系统中各部件的交互 ...
- Spark源码走读1——RDD
RDD全称Resilient Distributed DataSets,弹性的分布式数据集.是Spark的核心内容. RDD是只读的,不可变的数据集,也拥有很好的容错机制.他有5个主要特性 -A li ...
- Spark源码走读概述
Spark代码量 --Spark:20000loc --Hadoop 1.0:90000loc --Hadoop 2.0:220000loc Spark生态系统代码量 Spark生态系统 概述 --构 ...
- Apache Spark源码走读(九)如何进行代码跟读使用Intellij idea调试Spark源码
<一>如何进行代码跟读 概要 今天不谈Spark中什么复杂的技术实现,只稍为聊聊如何进行代码跟读.众所周知,Spark使用scala进行开发,由于scala有众多的语法糖,很多时候代码跟着 ...
- Apache Spark源码走读之3 -- Task运行期之函数调用关系分析
概要 本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚运行着的task其输入的数据从哪获取,处理的结果返回到哪里,如何返回. 准备 spark已经安装完毕 ...
- Spark源码阅读(五) --- Spark的支持的join方式以及join策略
版本变动 2021-08-30 增加了对Broadcast Hash Join小表大小的评估内容 增加了对Sort Merge Join优于Shuffle Hash Join调用的解释 目录 Spar ...
- Apache Spark源码走读之8 -- Spark on Yarn
欢迎转载,转载请注明出处,徽沪一郎. 概要 Hadoop2中的Yarn是一个分布式计算资源的管理平台,由于其有极好的模型抽象,非常有可能成为分布式计算资源管理的事实标准.其主要职责将是分布式计算集群的 ...
最新文章
- mediawiki java api_维基百科 MediaWiki API 解析
- 电商促销类插画素材,适合各种活动banner设计
- flex布局最后一行左对齐的处理
- mysql多数据库_mysql 多端口及主从数据库
- Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
- Drool的LHS和RHS
- java 传智播客 毕向东_传智播客,毕向东Java详细基础教程下载
- iTunes安装不了怎么办(win7安装iTunes)..
- 山西省行政村边界数据/乡镇街道边界数据/行政区划边界分布
- PyTorch 单机多GPU 训练方法与原理整理
- 小程序容器对政务服务平台建设的帮助
- http://www.cnblogs.com/dolphin0520/p/3923167.html
- 【实践】人体红外传感器
- 试题 历届真题 大胖子走迷宫【第十届】【决赛】【C组】
- java 运算顺序 从左到右_Java表达式在进行运算时,同级运算符按从右至左的方向进行。 (5.0分)_学小易找答案...
- C++循环语句之在0-1000之间找出水仙花数。
- javascript(js)中使用BigDecimal
- 招聘笔试中常考的智力题(转自网络)
- java守护线程与非守护线程
- Revit二开-设备连接(以消火栓为例)
热门文章
- 澳大利亚新南威尔士大学 巩东博士 招收若干名计算机视觉和机器学习方向PhD...
- CVPR 2022 | 针对目标检测的重点与全局知识蒸馏(FGD)
- ICCV2021 | 南洋理工大学、港中大提出Talk-to-Edit,对话实现高细粒度人脸编辑
- 免费算力提供!这个含YOLOv3算法讲解的深度学习课程来了
- 年薪十万的王者荣耀,LOL游戏模型师的工作是这样的|附50G资料
- 白嫖GPU!Kaggle大神带你打比赛!
- 收藏 | TinaFace:人脸检测新纪录
- 还在修改博士论文?这份《博士论文写作技巧》为你指南
- 最新《机器学习最优化》课程笔记,38页pdf,Optimization for Machine Learning
- 收藏 | 彻底搞懂机器学习中的正则化