理论实战经验汇总


Spark

SparkCore

Spark工作流程

图解:

Spark工作流程图

文字解说:

1.SparkContext向资源管理器注册并申请资源运行Executor

2.资源管理器分配资源,运行Executor

3.Executor发送心跳至资源管理器

4.SparkContext构建DAG

5.根据宽表划分Stage

6.将Stage发送给TaskScheduler

7.Executor向SparkContext请求Task

8.TaskScheduler将Task给Executor执行.同时SparkContext将应用程序代码发送给Executor

9.Task在Executor上运行,运行完毕,释放资源.


Spark的组件构成:

  1. Master 管理集群与节点,不参与计算
  2. Work 计算节点,进程本身不参与计算
  3. Driver 运行程序的main()方法,创建SparkContext
  4. SparkContext 管理Application的整个生命周期,包括DAGScheduler等组件
  5. Client 用户提交程序的入口

Spark组件中RDD的机制理解

  1. RDD(Resilient Distributed Dataset)是弹性分布式数据集
  2. 但是,它本身是不存储数据的:
    1. 初代RDD: 存储有分区信息和得到数据的方法.
    2. 子代RDD: 存储血缘关系.
  3. 那么数据在哪里呢?在Task里面.
  4. 所以每一次执行collect或者行动算子都要重塑一遍血缘关系.

补充:

  1. 一下有一组关于RDD的定义(据说是Spark源码中对于RDD的定义)
    1. A list of partitions
    2. A function for computing each split
    3. A list of dependencies on other RDDS
    4. Optionally,a partitioner for key-value RDDS
    5. Optionally,a list of preferred locations to compute each split on(e.g. block locations for an HDFS file)

参考这篇文章


文章作者: tzkTangXS
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 tzkTangXS !
  目录