Spark源码走读10——Spark On Yarn
来源:互联网 发布:手游源码交易 编辑:程序博客网 时间:2024/05/16 23:50
首先需要修改配置文件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,源码如下:
- Spark源码走读10——Spark On Yarn
- Spark源码走读——Spark Streaming
- Spark源码学习(9)——Spark On Yarn
- 源码-Spark on Yarn
- Spark源码走读1——RDD
- Spark源码走读4——Scheduler
- Spark源码走读5——Storage
- Spark源码走读6——Shuffle
- Spark源码走读7——Broadcast
- Spark源码走读8——NetWork
- Spark源码走读9——Metrics
- Spark源码走读11——Standalone
- Spark源码走读1——RDD
- Spark源码走读2——Spark Submit
- Spark源码走读12——Spark Streaming
- Spark源码走读概述
- Apache Spark源码走读
- spark官方文档之——Running Spark on YARN YARN上运行SPARK
- Android项目不自动生成第一个Activity
- RotateCard(自定义旋转view)——By 小明湖畔(463785757@qq.com)
- 用vs2013编译lua静态库
- Swift之网络编程-文件下载
- 三星苹果业绩分野对中国厂商的启示
- Spark源码走读10——Spark On Yarn
- Injection Attack
- mongoDB的高级查询和高级修改
- 利用jquery ajax读取下拉多选框的值,并向php页面传送的具体代码如下
- 给定一个非常长的字节序列如何高效的统计1的个数
- 厦门大学2015年法律硕士招生简章
- 特征描述子提取公用接口
- 灰度图像--图像增强 Robert算子、Sobel算子
- Protobuf在Visual Studio 2013下编译和使用(1)