Yarn模式运行机制

Yarn Cluster模式--用于生产

  • cluster模式提交任务流程图
  • Client先向RM(ResourceManager)提交请求,并上传jar到HDFS上
  • RM在集群中选择一个NM,在其上启动AppMaster,在AppMaster中实例化SparkContext(Driver)
  • AppMaster向RM注册应用程序,注册的目的是申请资源。RM监控App的运行状态直到结束
  • AppMaster申请到资源后,与NM通信,在Container中启动Executor进程
  • Executor向Driver反向注册,申请任务
  • Driver对应用进行解析,最后将Task发送到Executor上
  • Executor中执行Task,并将执行结果或状态汇报给Driver
  • 应用执行完毕,AppMaster通知RM注销应用,回收资源

Yarn Client 模式--用于调试

  • Yarn Client提交任务流程图
  • 启动应用程序实例化SparkContext,向RM申请启动AppMaster
  • RM在集群中选择一个NM,在其上启动AppMaster
  • AppMaster向RM注册应用程序,注册的目的是申请资源。RM监控App的运行状态直到结束
  • AppMaster申请到资源后,与NM通信,在Container中启动Executor进程
  • Executor启动之后向Driver反向注册,申请任务
  • Driver对应用进行解析,最后将Task发送到Executor上
  • Executor中执行Task,并将执行结果或状态汇报给Driver
  • 应用执行完毕,AppMaster通知RM注销应用,回收资源

Client模式与Cluster模式的区别

  • client模式:
  • Driver运行在客户端
  • 适用于调试,能直接看见各种日志
  • 连接断了,任务就挂了
  • cluster模式:
  • Driver运行在AppMaster中(运行在集群中)
  • 适合于生产,日志需要登录到某个节点才能看到
  • 连接断了,任务不受影响

核心组件:

Master(Cluster Manager):集群中的管理节点,管理集群资源,通知 Worker 启动 Executor 或 Driver

Worker :集群中的工作节点,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Driver或 Executor

Driver:执行 Spark 应用中的 main 方法,负责实际代码的执行工作。其主要任务:

  • 负责向集群申请资源,向master注册信息
  • Executor启动后向 Driver 反向注册
  • 负责作业的解析、生成Stage并调度Task到Executor上
  • 监控Task的执行情况,执行完毕后释放资源
  • 通知 Master 注销应用程序

Executor:是一个 JVM 进程,负责执行具体的Task。Spark 应用启动时, Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃, 会将出错节点上的任务调度到其他Executor 节点上继续运行。Executor 核心功能:

  • 负责运行组成 Spark 应用的任务,并将结果返回给 Driver 进程
  • 通过自身的 Block Manage 为应用程序缓存RDD

集群部署方式

Standalone:独立模式,Spark 原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统,使用 Standalone 可以很方便地搭建一个集群;

Hadoop YARN:统一的资源管理机制,在上面可以运行多套计算框架,如MapReduce、Storm 等,根据driver 在集群中的位置不同,分为 yarn client 和 yarn cluster;

Apache Mesos:一个强大的分布式资源管理框架,它允许多种不同的框架部署在其上

提交任务时,以下参数共同决定了 Spark 运行方式:

  • master MASTER_URL :决定了 Spark 任务提交给哪种集群处理
  • deploy-mode DEPLOY_MODE:决定了 Driver 的运行方式,可选值为 Client(缺省值) 或 Cluster

yarn 设置延迟 yarn运行机制详解_App