Spark应用架构主要包含两部分 1)Spark runtime application 2) Spark cluster。
Spark runtime application的主要组件是SparkDriver,它负责
1. 创建SparkSession和相应的SparkContext。SparkSession是Spark应用的入口。其中SparkSession可以通过SparkConf来配置。
2. Plan an application by creating a DAG consisting of tasks and stages. 其中Tasks是在Executor上执行。
3. 通过ApplicationMaster,获得执行application需要的资源(即Executor)。
4. 执行application和协调tasks以及stages。
5. 和client交互:从client接收application和返回结果给client。
Spark cluster的主要组件和职责是
1. Cluster Manager: 负责cluster资源的管理。可以是Spark自带的资源管理器,也可以是Hadoop资源管理器如YARN等。
2. ApplicationMaster:Spark application是通过ApplicationMaster向Cluster Manager申请资源。ApplicationMaster的主要职责是1)通过Cluster Manager为application申请资源。2)Monitor这些资源的状态和health。
3. Executor:针对指定的application,负责 1)Reserve CPU和 memory资源。2)执行tasks。