TaskScheduler的初始化机制
TaskScheduler,如何注册Application,executor如何反向注册?
TaskScheduler的初始化机制
createTaskScheduler(),内部会创建三个东西。
一是TaskSchedulerImpl,它其实就是我们所说的TaskScheduler。
二是SparkDeploySchedulerBackend,它在底层会负责接收TaskSchedulerImpl的控制,实际上负责与Master的注册,Ececutor的反注册,task发送到executor等操作。
调用TaskSchedulerImpl的init()方法,创建SchedulerPool,当DAGScheduler要让TaskScheduler去调度一些任务的时候,就会把这些任务放到调度池里面,它有不同的优先策略,比如FIFO。
调用TaskSchedulerImpl的start()方法,方法内部调用SparkDeploySchedulerBackend的start()方法。
SparkDeploySchedulerBackend的start()方法,创建一个东西,AppClient。
AppClient,启动一个线程,创建一个ClientActor。
ClientActor线程,调用两个方法,registerWithMaster()——>tryRegisterAllMasters()。
registerWithMaster()——>tryRegisterAllMasters(),向MasterActor发送RegisterApplication(case class,里面封装了Application的信息)。
RegisterApplication发送数据到Spark集群的Master——>Worker——>Executor。
Executor反向注册到SparkDeploySchedulerBackend上面去。
TaskSchedulerImpl底层实际主要基于SparkDeploySchedulerBackend来工作。
DAGScheduler
DAGSchedulerEventProcessActor,DAGScheduler底层基于该组件进行通信。(线程)
SprkUI
SprkUI,显示Application运行的状态,启动一个jetty服务器,来提供web服务,从而显示网页。
源码分析
start()方法,
package org.apache.spark.deploy.client,AppClient.scala,
the Spark UI,
本文首发于steem,感谢阅读,转载请注明。
https://steemit.com/@padluo
微信公众号「padluo」,分享数据科学家的自我修养,既然遇见,不如一起成长。
数据分析
读者交流电报群
https://t.me/sspadluo
知识星球交流群
知识星球读者交流群
领取专属 10元无门槛券
私享最新 技术干货