Spark运行架构

来源:互联网 发布:防蹭网软件哪个好 编辑:程序博客网 时间:2024/04/28 20:07

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

Spark集群运行架构

其中涉及到以下概念:

概念 解释 Application 基于Spark的用户程序,包含了1个Driver Program和若干个Executor进程 Driver Program 运行Application的main()函数并且创建SparkContext,通常用SparkContext代表Driver Program;监听特定端口以保证和executor的通信 SparkContext Spark代码中定义的一个对象,提供driver program的功能 Executor Application运行在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 RDD Spark的基本计算单元,可以通过一系列算子进行操作(主要有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.0DAGSchedulerDAGSchedulerSparkContextSparkContextMasterMasterExecutorExecutorTaskSchedulerTaskScheduler在client进程中被创建申请Cpu, Mem资源分配worker资源启动StandaloneExecutorBackend注册发送applicaiton代码DAG图DAG图分解为Stage传送Stage/TaskSet分配Tasksexecutor线程池执行task报告task执行进展,直至完成注销释放worker资源

Spark YARN Cluster Mode 运行流程示意图

Created with Raphaël 2.1.0ClientClientResourceManagerResourceManagerNodeManagerSparkContextNodeManagerSparkContextNodeManagerExecutorNodeManagerExecutorDAGSchedulerDAGSchedulerTaskSchedulerTaskScheduler请求分配ApplicationContainer创建Container创建SparkContext请求分配worker资源分配worker资源创建Container启动StandaloneExecutorBackend注册发送applicaiton代码DAG图DAG图分解为Stage传送Stage/TaskSet分配Tasksexecutor线程池执行task报告task执行进展直至完成注销释放driver资源释放worker资源
0 0
原创粉丝点击