浪尖 qq 技术交流群 459898801 224209501
浪尖 qq 技术交流群 459898801 224209501
Spark 内部通讯方式
Spark 为协调各个组件完成任务及内部任务处理采用了多种方式进行了各个组件之间的
通讯方式
1,单个部件自己消息处理方式
DAGSchedulerEventProcessLoop 该类继承自 EventLoop。是一个典型的生产消费模型。
A),生产者
通过调用
DAGSchedulerEventProcessLoop.post(event: E)
来将消息进行发布。
B),消费者
Eventloop 内部维护了一个线程,循环的消费消息 eventQueue.take(),调用
onReceive(event)进行处理。DAGSchedulerEventProcessLoop 内部实现了 doOnReceive,
对事件进行模式匹配然后交给具体的消息处理函数。
private def doOnReceive(event: DAGSchedulerEvent): Unit = event match {
case JobSubmitted(jobId, rdd, func, partitions, callSite, listener, properties)
=>
dagScheduler.handleJobSubmitted(jobId, rdd, func, partitions, callSite,
listener, properties)
case MapStageSubmitted(jobId, dependency, callSite, listener, properties) =>
dagScheduler.handleMapStageSubmitted(jobId, dependency, callSite, listener,
properties)
case StageCancelled(stageId) =>
dagScheduler.handleStageCancellation(stageId)
case JobCancelled(jobId) =>
dagScheduler.handleJobCancellation(jobId)
jobId/event/call/Site/listener/内部/properties/消息/方式/case/
jobId/event/call/Site/listener/内部/properties/消息/方式/case/
-->