标签:
一. YARN的理解
YARN是Hadoop 2.x版本的产物,它最基本的设计思想是将JobTracker的两个主要功能,即资源管理,作业调度和监控分解成为两个独立的进程。再详细介绍Spark程序工作过程前,先简单的介绍一下YARN,即Hadoop的操作系统,不仅支持MapReduce计算框架,而且还支持流式计算框架,迭代计算框架,MPI并行计算框架等,实现时采用了基于事件的驱动机制。
YARN的架构图,如下所示:
1. ResourceManager
ResourceManager类似JobTracker,包括两个主要的组件:调度器(Scheduler)和应用程序管理器(ApplicationManager)。分别介绍,如下所示:
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
标签:
原文地址:http://www.cnblogs.com/shengshengwang/p/4853342.html