码迷,mamicode.com
首页 > 其他好文 > 详细

基于YARN的Spark程序工作过程

时间:2015-10-03 14:24:08      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:

一. YARN的理解

YARN是Hadoop 2.x版本的产物,它最基本的设计思想是将JobTracker的两个主要功能,即资源管理,作业调度和监控分解成为两个独立的进程。再详细介绍Spark程序工作过程前,先简单的介绍一下YARN,即Hadoop的操作系统,不仅支持MapReduce计算框架,而且还支持流式计算框架,迭代计算框架,MPI并行计算框架等,实现时采用了基于事件的驱动机制。

YARN的架构图,如下所示:

技术分享

1. ResourceManager

ResourceManager类似JobTracker,包括两个主要的组件:调度器(Scheduler)和应用程序管理器(ApplicationManager)。分别介绍,如下所示:

  • Scheduler的主要功能是负责分配资源到各个正在运行的应用程序中,它是基于资源的请求来执行调度功能的。Scheduler是基于Container的抽象概念,包括内存,CPU,磁盘和网络等;
  • ApplicationManager的主要功能是负责接送提交的作业,协商第一个执行该任务的Container,并提供失败作业的重启。每个应用的ApplicationMaster负责与Scheduler谈判资源占用的Container数量,追踪状态和监控进程。

2. NodeManager

NodeManager类似TaskTracker,它的主要功能是负责启动Container,监控Container的资源(CPU,内存,磁盘和网络等),并将信息上报给ResourceManager。

 

二. Spark基本框架

一个Spark应用程序由一个Driver程序和多个Job构成。一个Job由多个Stage组成。一个Stage由多个没有Shuffle关系的Task组成。Spark基本框架,如下所示:

技术分享

     Spark应用程序都离不开SparkContext和Executor两部分,Executor负责执行任务,运行Executor的机器称为Worker节点,SparkContext由用户程序启动,通过资源调度模块和Executor通信。
     详细来说,以SparkContext为应用程序运行的总入口,在SparkContext的初始化过程中,Spark会分别创建DAGScheduler作业调度和TaskScheduler任务调度两级调度模块。
     作业调度模块是基于任务阶段的高层调度模块,它为每个Spark作业计算具有依赖关系的多个调度阶段(通常根据shuffle来划分),然后为每个阶段构建出一组具体的任务(通常会考虑数据的本地性等),然后以TaskSets(任务组)的形式提交给任务调度模块来具体执行。而任务调度模块则负责具体启动任务、监控和汇报任务运行情况。

 

三. RDD及其计算方式(Transformation和Action)

 

四. DAGScheduler作业调度和TaskScheduler任务调度

 

五. Spark工作过程

 

参考文献:

[1] YARN简介:http://www.ibm.com/developerworks/cn/data/library/bd-yarn-intro/index.html

[2] Hadoop新MapReduce框架Yarn详解:http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/

[3] Spark应用程序的运行架构:http://blog.csdn.net/hwssg/article/details/38537523

[4] RDD:基于内存的集群计算容错抽象:http://shiyanjun.cn/archives/744.html

基于YARN的Spark程序工作过程

标签:

原文地址:http://www.cnblogs.com/shengshengwang/p/4853342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!