博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Yarn、Spark架构及其对比
阅读量:3749 次
发布时间:2019-05-22

本文共 1650 字,大约阅读时间需要 5 分钟。

Yarn、Spark架构比对与执行流程

YARN的架构

在这里插入图片描述

  • ResourceManager: RM 资源管理器
    • 整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度
    • 处理客户端的请求: submit, kill
    • 监控我们的NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉我们的AM来如何进行处理
  • NodeManager: NM 节点管理器
    • 整个集群中有多个,负责自己本身节点资源管理和使用
    • 定时向RM汇报本节点的资源使用情况
    • 接收并处理来自RM的各种命令:启动Container
    • 处理来自AM的命令
  • ApplicationMaster: AM
    • 每个应用程序对应一个:MR、Spark,负责应用程序的管理
    • 为应用程序向RM申请资源(core、memory),分配给内部task
    • 需要与NM通信启动/停止task,task是运行在container里面,AM也是运行在container里面
  • Container 容器: 封装了CPU、Memory等资源的一个容器,是一个任务运行环境的抽象
  • Client: 提交作业 查询作业的运行进度,杀死作业

Yarn执行流程

  1. Client提交作业请求

  2. ResourceManager 进程和 NodeManager 进程通信,根据集群资源,为用户程序分配第一个Container(容器),并将 ApplicationMaster 分发到这个容器上面

  3. 在启动的Container中创建ApplicationMaster

  4. ApplicationMaster启动后向ResourceManager注册进程,申请资源

  5. ApplicationMaster申请到资源后,向对应的NodeManager申请启动Container,将要执行的程序分发到NodeManager上

  6. Container启动后,执行对应的任务

  7. Tast执行完毕之后,向ApplicationMaster返回结果

  8. ApplicationMaster向ResourceManager 请求kill

spark 架构(Standalone模式)

在这里插入图片描述

  • Application

    用户自己写的Spark应用程序,批处理作业的集合。Application的main方法为应用程序的入口,用户通过Spark的API,定义了RDD和对RDD的操作。

  • Client:客户端进程,负责提交作业到Master。

  • Master(类比与ResourceManager

    • Standalone模式中主控节点,负责接收Client提交的作业,管理Worker,并命令Worker启动DriverExecutor。
  • Worker(类比于NodeManager

    • Standalone模式中slave节点上的守护进程,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Driver和Executor
  • Driver(类比于ApplicationMaster

    • 一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler
    • DAGScheduler: 实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。
    • TaskScheduler:实现Task分配到Executor上执行。
    • Stage:一个Spark作业一般包含一到多个Stage。
    • Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。
  • Executor(类比于Container):即真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task

转载地址:http://bmdsn.baihongyu.com/

你可能感兴趣的文章
字符串中的查找
查看>>
Radom类随机生成
查看>>
java.Math类方法
查看>>
关于限定词
查看>>
UML和类图
查看>>
浮点数无法准确存放,在进行等 值判断的时候如何解决?
查看>>
最常用的Dos命令
查看>>
java基础篇笔记(入门篇)
查看>>
Math中部分方法
查看>>
变量和标识符
查看>>
控制语句的学习
查看>>
对数组的初步学习
查看>>
数组的拷贝和java.util.Arrays 类
查看>>
数组实现储表格数据
查看>>
面向对象篇
查看>>
字符串如何去重呢?
查看>>
二维数组和稀疏数组的相互转化
查看>>
String长度分析?
查看>>
compareTo的用法
查看>>
面向对象的小练习题(一)
查看>>