Spark Cluster Mode
首先了解一些概念:
- Application #用户通过Spark构建的程序,由Driver程序和executors程序组成。
- Application jar #个人理解是包含了Application所依赖的其他包的jar
- Driver program #master,SC生成的运行在程序入口(main())之下的程序,个人理解Driver program是对用户代码封装,并由内部的程序将job分解为若干个阶段及tasks,然后交由Executors处理。
- Cluster manager #包括standalone Yarn等,作用是为executors分配资源。
- Worker node #集群中的结点
- Executor #worker,具体执行Application的程序,每个application都会分配自己的Executor
- Task #作为一个工作单元分发给Executors
- Job #Application要做的任务
- Stage #Job分为若干个Stage,和hadoop将任务分为map、reduce类似
Spark应用作为独立的程序集合运行在集群之上,SparkContext(下文称SC)将Spark应用程序组织起来。
当运行一个Spark集群时,SC可以连接在一些cluster manager上,这些cm包括Spark自己的集群管理器,以及Mesos和Yarn,cm的作用是为Spark应用分配资源。SC与cm连接后,Spark获得集群节点上的executors,这些执行器为应用提供计算和存储,接着,应用程序的代码在executors上运行。
这样的架构有如下特点:
- 应用间独立。每个应用有他们自己的executor 进程,executors以多线程的方式在应用进行过程与执行tasks。
这使得应用与应用之间隔离开来