基于YARN的Spark程序工作过程

一. 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

时间: 2024-10-26 21:21:19

基于YARN的Spark程序工作过程的相关文章

7.基于yarn的Spark集群搭建

构造分布式的Spark1.0.2集群 下载Scala 2.10.4,具体下载地址: http://www.scala-lang.org/download/2.10.4.html 在Ubuntu机器上Scala会帮助我们自动选择“scala-2.10.4.tgz”进行下载: 安装和配置Scala 我们需要在master.slave1以及slave2上分别安装Scala 安装Scala 将Scala安装包拷贝到各台机器上 解压 新建目录/usr/lib/scala 将上述解压之后的文件夹scala-

MapReduce程序的工作过程

还记得2.5年前就搭建好了Hadoop伪分布式集群,安装好Eclipse后运行成功了WordCount.java,然后学习Hadoop的步伐就变得很慢了,相信有很多小伙伴和我一样.自己对MR程序(特指Hadoop 1.x版本)的工作过程一直都不是很清楚,现在重点总结一下,为MR编程打好基础.由于MapReduce是基于HDFS的操作,因此要想深入理解MapReduce(解决的是分布式计算问题),首先得深入理解HDFS(解决的是分布式存储问题). 一. HDFS框架组成 HDFS采用master/

【转】MapReduce程序的工作过程

原文链接 http://www.cnblogs.com/shengshengwang/p/4852927.html 还记得2.5年前就搭建好了Hadoop伪分布式集群,安装好Eclipse后运行成功了WordCount.java,然后学习Hadoop的步伐就变得很慢了,相信有很多小伙伴和我一样.自己对MR程序(特指Hadoop 1.x版本)的工作过程一直都不是很清楚,现在重点总结一下,为MR编程打好基础.由于MapReduce是基于HDFS的操作,因此要想深入理解MapReduce(解决的是分布

基于IDEA使用Spark API开发Spark程序

清明假期折腾了两天,总结了两种方式使用IDE进行spark程序,记录一下: 第一种方法比较简单,两种方式都是采用SBT进行编译的. 注意:本地不需要安装Scala程序,否则在编译程序时有版本兼容性问题. 一.基于Non-SBT方式 创建一个Scala IDEA工程 我们使用Non-SBT的方式,点击"Next" 命名工程,其他按照默认 点击"Finish"完成工程的创建 修改项目的属性 首先修改Modules选项 在src下创建两个文件夹,并把其属性改为source

spark基于yarn的两种提交模式

一.spark的三种提交模式 1.第一种,Spark内核架构,即standalone模式,基于Spark自己的Master-Worker集群. 2.第二种,基于YARN的yarn-cluster模式. 3.第三种,基于YARN的yarn-client模式. 如果,你要切换到第二种和第三种模式,在提交spark应用程序的spark-submit脚本加上--master参数,设置为yarn-cluster,或yarn-client,即可.如果没设置,那么,就是standalone模式. 一.基于YA

Spark运行模式_基于YARN的Resource Manager的Custer模式(集群)

使用如下命令执行应用程序: 和"基于YARN的Resource Manager的Client模式(集群)"运行模式,区别如下: 在Resource Manager端提交应用程序,会生成SparkSubmit进程,该进程只用来做Client端,应用程序提交给集群后,就会删除该进程. Resource Manager在集群中的某个NodeManager上运行ApplicationMaster,该AM同时会执行driver程序.紧接着,会在各NodeManager上运行CoarseGrain

部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0)

部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0) 部署Bookinfo示例程序 在下载的Istio安装包的samples目录中包含了示例应用程序. Bookinfo应用 部署一个样例应用,它由四个单独的微服务构成,用来演示多种 Istio 特性.这个应用模仿在线书店的一个分类,显示一本书的信息.页面上会显示一本书的描述,书籍的细节(ISBN.页数等),以及关于这本书的一些评论. Bookinfo 应用分为四个单独的微服务: productpage

基于Mesos运行Spark

背景介绍 Spark有多种集群运行模式,例如:Standalone,Yarn,Mesos.      下面就说一下如何在Mesos上运行Spark,这也是官方推荐的一种运行方式.      在运行Spark之前咱们先简略介绍一下Mesos.      Mesos计算框架是一个集群管理器,提供了有效的.跨分布式的应用或框架的资源隔离和共享,可以运行Haoop,Spark,Marathon等多种框架.使用Zookeeper实现容错机制,使用Linux Containers来隔离任务,支持多种资源计算

如何将 MapReduce 程序转化为 Spark 程序

1.MapReduce和Spark比较 目前的大数据处理可以分为以下三个类型: 1.复杂的批量数据处理(batch data processing),通常的时间跨度在数十分钟到数小时之间: 2.基于历史数据的交互式查询(interactive query),通常的时间跨度在数十秒到数分钟之间: 3.基于实时数据流的数据处理(streaming data processing),通常的时间跨度在数百毫秒到数秒之间. 大数据处理势必需要依赖集群环境,而集群环境有三大挑战,分别是并行化.单点失败处理.