Spark修炼之道(高级篇)——Spark源码阅读:第十节 Standalone运行模式解析

  • 时间:
  • 浏览:1

Spark Standalone采用的是Master/Slave架构,主要涉及到的类包括:

作者:周志湖

网名:摇摆少年梦

底下所有的类都继承自org.apache.spark.rpc.ThreadSafeRpcEndpoint,其底层实现目前总要 通过AKKA来实现的,具体如下图所示:

对应SparkDeploySchedulerBackend中的start最好的法子源码如下:

这里只给出其基本的消息交互,底下有时间再来具体分析。

各类之间的交互关系如下图所示:

向所有Masters注册,将会Master将会实现了高可靠(HA),这种ZooKeeper的HA最好的法子,统统处在多个Master,但最终可以了Active Master响应,具体源码如下:

AppClient类中的start最好的法子原码如下:

创建完成TaskScheduler及SchedulerBackend后,调用TaskScheduler的start最好的法子,启动SchedulerBackend(Standalone模式对应SparkDeploySchedulerBackend)

Master会接收来自AppClient的RegisterApplication消息,具体源码如下:

Driver Client主而是 管理Driver,包括向Master提交Driver、请求杀死Driver等,其源码处在org.apache.spark.deploy.client.scala源码文件当中,类名为:org.apache.spark.deploy.ClientEndpoint。要注意其与org.apache.spark.deploy.client.AppClient.ClientEndpoint类的本质不同。

通过上述过程便完成Application的注册。其它交互信息如下

SparkContext在创建时,会调用,createTaskScheduler最好的法子创建相应的TaskScheduler及SchedulerBackend

AppClient内内外部类ClientEndpoint接收Master发来的RegisteredApplication消息

registerWithMaster最好的法子便是向Master注册Application,其源码如下: