大数据IMF传奇行动绝密课程第13课:Spark内核架构解密

来源:互联网 发布:算法如何入门 编辑:程序博客网 时间:2024/05/16 00:25

Spark内核架构解密

图13-1 Spark Runtime架构

图13-2 Spark Cluster架构
Driver:运行程序时具有main方法并且创建SparkContext的环境对象
程序运行的核心
SparkContext,高层调度器DAGScheduler,底层调度器TaskScheduler,也有SchedulerBackEnd
负责向Master注册当前程序,Master给他分配资源,根据Action返回Job,Job里面有一系列的RDD,如果是宽依赖的话就划分成不同的Stage,Stage交给底层调度器TaskScheduler,TaskScheduler拿到任务后根据任务情况把任务给Executor去执行。
Executor如果出问题会向Driver进行汇报,运行完毕后SparkContext关闭

Application = Driver+ Executor
Driver部分的代码:SparkConf+SparkContext
Executor部分的代码:textFile, flatMap, map
Executor中有线程池,任务由线程池中的线程执行,执行后回收

Cluster Manager:获取资源的外部程序
Spark Application的运行不依赖于Cluster Manager
Worker上不运行程序代码,Worker管理资源使用情况,会接收Master分配资源的指令,并通过ExecutorRunner来启动新的进程来开启Executor,Worker不会发机器资源信息给Master,在Master分配资源之时已经知道了。

Job:包含一些列Task的并行计算
Action不会产生RDD

Spark快:调度、容错

窄依赖依赖固定个数的,不会变

Stage内部计算逻辑完全一样,只是计算的数据不同罢了

一个Application里面可以有多个jobs(不同的action),一般一个action对应一个job,checkpoint也会导致job

Spark程序运行的两种模式:Client Cluster,建议使用Client模式

driver频繁和executor通信,所以要在同一个网段中

不要用IDE作为Driver,Driver也可能有JavaEE

分配资源由以下内容决定:
1、spark-env.sh和spark-default.sh
2、spark-submit提交的参数
3、程序中spark-conf配置的参数

TaskRunner继承Runnable接口

图13-3 Spark内核架构

0 0
原创粉丝点击