基于YARN的SPARK管理过程

基于YARN的SPARK管理过程

前言

MapReduce与Spark中Job概念的区别

在MapReduce中的一个抽象概念是Job,在Job执行时系统会加载数据,然后执行Map, Shuffle, Reduce等操作,再对结果进行持久化。

在Spark中则是有Application,一个Application下面有多个Job,多个Job可以并行也可以串行,一个Job由多个Stage组成。

Spark执行过程中各组成部分介绍

Application

一个Application与Spark API接口中的一个SparkContext相对应(目前有更高级的抽象SparkSession封装着SparkContext)。

一个Application可以用于:

  • 一批Job(如:一个包含SparkContext的脚本,在限定时间内执行完成)
  • 一个有多个Job的交互式会话(如:Spark Shell)
  • 一个长期存活的Server程序(如:带SparkContext,死循环接收Spark任务的Server脚本)

Application在Spark集群中会拥有执行进程,称为Executors。Executors即便在没有Job可运行的情况下也会运行在集群中。

Job

一个Job则拆分成不同的stage。

** Stage**

一个Stage则包含Map, Shuffle, Reduce等操作。一个Stage可进一步细化为一系列Task。

Task

一个Stage细化为一系列Task,这些Task都执行相同的代码,只是执行在输入数据集上的不同部分。

Executors

在MapReduce中每个Task运行在各自的进程中,当Task结束的时候,杀掉进程。

在Spark中多个Task可以并行的运行在一个进程中,即Executor。这个进程即便在没有Job可运行的情况下也会运行在集群中,生命周期与Application一样长。(好处是调用速度快,坏处是资源利用率不高)

一个节点中可以有多个Executor。

Driver

Driver进程负责运行Spark Context,将Application转化为DAG图,以及初始化Job。

Driver与Application一一对应。

Resource Management

Spark支持三种类型集群管理方式:YARN, Mesos, Standalone

三种方式都由两部分组成:

  • Central Master Service:<u>YARN ResourceManager</u>, <u>Mesos Master</u>, <u>Spark Standalone Master</u>
  • Slave Service:<u>YARN NodeManager</u>, <u>Mesos Slave</u>, <u>Spark Standalone Slave</u>

Central Master Service用于决定Applications的运行时机、地方。
Slave Service运行在各个节点 ,真正的启用Executor进程。有时会监测Executor的是否活着,还有其资源消费情况。

基于YARN的Spark资源管理

YARN结合Spark运行方式简介

一个Spark Executor以一个YARN Container的形式运行。Spark在一个Container中持有多个Task。

Spark支持两种运行在YARN上的方式:”yarn-cluster”, “yarn-client”

YARN Cluster模式

一个Application实例对应一个Application Master进程,也是运行在一个YARN Container中,并且是第一个Container。

Application Master负责从Resource Manager处获取资源(合适的Hosts和Containers),再通知NodeManagers启动Containers。

《基于YARN的SPARK管理过程》 YARN Cluster Mode

YARN Client模式

Application Master只负责从Resource Manager处获取资源。由Client与各个Container进行通信确认如何工作。

《基于YARN的SPARK管理过程》 YARN Client Mode

YARN Cluster模式与Client模式的区别

||YARN Cluster|YARN Client|
|:—|:—|:—|
|Driver runs in|Application Master|Client|
|Who controls running process|Application Master|Client|
|Spark interactively, like spark-shell|No|Yes|

|Spark driver run inside client process (initiates the Spark Application)|No|Yes|

参考文献

[1] http://blog.cloudera.com/blog/2014/05/apache-spark-resource-management-and-yarn-app-models/
[2] http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-1/
[3] https://spark.apache.org/docs/1.0.2/job-scheduling.html

    原文作者:yaohwang
    原文地址: https://www.jianshu.com/p/87d2d90fa823
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞