第33课:Spark架构剖析零基础初探

理解Spark架构,至关重要, 下面分布讲解Spark实现架构。

1. Spark部署图:

Spark架构
解释:
1)Driver Program
如果用做公司做项目来打比喻整个Spark集群,那么Driver就相当于PM,负责给Engineer(Executor)分配任务,由每个Engineer来并行完成部分工作。由PM来管理协调整个项目,包括容错。

2)Cluster Manager
负责管理和分配资源, 资源包括:Core、Memory、IO(磁盘IO、网络IO)。
Spark理想的计算场景是Core+Memory,如果满足不了该条件,那么就基于磁盘进行计算,但是计算本身还是发生在内存中。
基于内存进行计算,前提是从磁盘抓取数据,放入内存,让Thread Pools进行工作。

3)Worker Node
Worker节点上的Executor相当于Engineer。
每台WorkerNode ,可以有若干Executor,默认情况一个Worker节点只有一个Executor。每个Executor处理多个Task, Executor以并发线程的方式,执行Driver 分配的任务。每个节点只处理一部分任务,多个节点一起并行协同工作,来完成Driver分配的任务。


2. Spark Runtime

这里写图片描述
Driver运行在一台机器上,Driver向Worker分配任务;
Worker有Executor,通过线程池并发工作,接收Driver发来的任务,每个节点处理一部分任务,Executor向Driver负责;
Spark在启动时,还没有执行时,预先给Worker分配资源,Coarse Grained(粗粒度)方式。


3. Spark事件流

这里写图片描述
该事件流是在Spark Driver层面。
作业的调度,依赖SparkContext,一个程序要运行,先调用runJob方法,交给
DAGScheduler。

DAGScheduler,它是高层的调度器,由它来把Job划分成很多步骤,其中一些步骤又合并组成一个阶段,于是整个Job就被划成很多阶段。这样就能更快速地完成任务。
比如:某个作业,划分成10000个步骤,把前面3000个步骤组成一个阶段;中间5000个步骤组成一个阶段;最后2000个步骤形成一个阶段。在每个阶段,比如:第一个阶段中,这3000个步骤是并发完成,基于数据分片,数据不一样,计算逻辑是一样的,通过并行计算来完成。

TaskScheduler,它是底层的调度器。

Cluster / Local Runner


4. Spark组件

这里写图片描述
在Driver中Shuffler是划分阶段的依据;
Executor中的Block Manager来负责从HDFS、HBase等途径读写数据;


5. RDD Graph

这里写图片描述
运行级别并行作用于不同的数据分片上。


6. Dependency Types

这里写图片描述
窄依赖:窄依赖是同一个阶段的,优先在内存迭代,窄依赖的算子,包括:map、filter、union等等。
宽依赖(Shuffle依赖):需要依赖于上一阶段的全部运算结果,必须上一个阶段全部完成,才能开始这个阶段。算子包括:groupByKey等等。

Shuffle根据依赖,把任务划分成相应的阶段。不同阶段之间产生Shuffle宽依赖。第一个阶段和第二个阶段,肯定会产生宽依赖(Shuffle依赖)


7. Scheduler Optimizations
这里写图片描述
调度优化,在同样的Stage阶段内,基于内存进行迭代


8. Schedule
这里写图片描述
基于RDD编程(通过DataFrame、DateSet来编程)
1)RDD Objects生成DAG(有向无环图的依赖),图中示例的rdd1和rdd2之间经过join、groupBy等若干lazy级别的transform操作,生成DAG有向无环图,DAG用来描述任务之间的先后关系。
2)DAG作为输入递交给DAGScheduler。DAGScheduler根据DAG描述的任务内部的先后顺序和转换关系,进而被划分出不同的stage,得到了RDD内部的依赖关系,形成TaskSet。
3)TaskSet再由底层调度器TaskScheduler通过cluster Manager来分配任务,把任务交给Worker执行。如果出错了或者慢任务,TaskScheduler需要不断重试。


总结:
RDD是Spark架构的基石。
查询文档:http://spark.apache.org/docs/latest/programming-guide.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值