美文网首页
基于YARN的SPARK管理过程

基于YARN的SPARK管理过程

作者: yaohwang | 来源:发表于2017-01-24 13:05 被阅读1628次

    基于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 Cluster Mode

    YARN Client模式

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

    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

    相关文章

      网友评论

          本文标题:基于YARN的SPARK管理过程

          本文链接:https://www.haomeiwen.com/subject/uejzbttx.html