Spark运行架构

Spark官网展示了如下的集群运行架构

Spark集群运行架构

其中涉及到以下概念:

概念解释
Application基于Spark的用户程序,包含了1个Driver Program和若干个Executor进程
Driver Program运行Application的main()函数并且创建SparkContext,通常用SparkContext代表Driver Program;监听特定端口以保证和executor的通信
SparkContextSpark代码中定义的一个对象,提供driver program的功能
ExecutorApplication运行在worker node上的一个进程,负责运行Task,并且将数据存在内存或者磁盘上,该进程在application运行期间一直驻留;每个Application都有各自独立的executors,不同application的executor若不通过外部存储,是无法进行数据交互的
Cluster Manager在集群上获取资源的外部服务,Spark支持Spark Standalone, YARN, Mesos三种cluster manager;但Spark并不依赖于cluster manager,它只需要能获取executor进程并保持通信就可以了
Worker Node集群中任何可以运行application代码的节点
Task被送到某个executor上的工作单元;不同application的task运行在不同的JVM中,有着良好的隔离
Job包含多个Task组成的并行计算,往往由Spark action催生
Stage每个Job会被拆分很多组task,每组任务被称为Stage,也可称TaskSet
RDDSpark的基本计算单元,可以通过一系列算子进行操作(主要有Transformation和Action操作)
DAG Scheduler根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler
Task Scheduler将stage提交给worker nodes运行并回报结果
Client Deploy Mode在client mode下,drive program直接运行在spark-submit进程中,因为driver与worker node的网络通信是非常重要的开销,所以提交application的主机需要和work node处在同一物理网络中,以获得较小的网络延迟;同时,需要实时交互的应用如Spark Shell,是比较适合用client mode的
Cluster Deploy Mode在cluster mode下,driver program进程由cluster管理,以保证与worker node通信时网路延迟小,所以当用户提交application的设备在集群的网络之外(网络延迟大)的时候,需要用cluster mode来部署;目前YARN只支持Python的cluster部署,而mesos还不能支持cluster部署

Spark Standalone Client Mode 运行流程示意图

Created with Raphaël 2.1.0 DAGScheduler DAGScheduler SparkContext SparkContext Master Master Executor Executor TaskScheduler TaskScheduler 在client 进程中被创建 申请Cpu, Mem资源 分配worker资源 启动 StandaloneExecutorBackend 注册 发送applicaiton代码 DAG图 DAG图分解为Stage 传送Stage/TaskSet 分配Tasks executor线程池 执行task 报告task执行进展,直至完成 注销 释放worker资源

Spark YARN Cluster Mode 运行流程示意图

Created with Raphaël 2.1.0 Client Client ResourceManager ResourceManager NodeManager SparkContext NodeManager SparkContext NodeManager Executor NodeManager Executor DAGScheduler DAGScheduler TaskScheduler TaskScheduler 请求 分配Application Container 创建Container 创建SparkContext 请求分配worker资源 分配worker资源 创建Container 启动 StandaloneExecutorBackend 注册 发送applicaiton代码 DAG图 DAG图分解为Stage 传送Stage/TaskSet 分配Tasks executor线程池 执行task 报告task执行进展 直至完成 注销 释放driver资源 释放worker资源
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值