Spark 启动过程(standalone)

Spark启动过程

正常启动Spark集群时往往使用start-all.sh ,此脚本中通过调用start-master.sh和start-slaves.sh启动mater及workers节点。

1、  启动Master

a)         注册SignalLogger日志记录器

b)         创建名称为master的Actor 并启动,在启动master之前会:

                         i.              创建workers、apps、drivers等例表,用于记录相关信息

                       ii.              创建WebUi

                      iii.              创建及启动MetricsSystem用于监控系统状态

                      iv.              定期检查Worker状态,维护可用Worker列表

2、  启动Worker

a)         注册SignalLogger日志记录器

b)         创建名称为worker的Actor 并启动,在启动worker之前会:

                         i.              创建executors、drivers、finishedApps等列表,用于记录相关信息

                       ii.              创建及启动MetricsSystem用于监控worker状态

                      iii.              生成workerID,以时间串+host+port组成,其不可能重复。

                      iv.              创建worker工作目录

                       v.              向master注册worker

                      vi.              定期检查Worker状态,维护可用Worker列表

3、  Worker 向Master注册过程

a)         将worker被启动时,向master发送消息:master ! RegisterWorker(workerId, host, port, cores, memory, webUi.boundPort, publicAddress)。

b)         当master收到worker发磅的RegisterWorker消息后,先检测workerId是否已注册,

                         i.              若已注册,向worker发送sender ! RegisterWorkerFailed("Duplicate worker ID")消息

                       ii.              若未注册,则注册worker,将其信息记录worker相关的列表,如idToWorker、workers等中,并将其添加到persistenceEngine中,通知sender ! RegisteredWorker(masterUrl, masterWebUiUrl)

                      iii.              执行schedule()

c)         当worker收到master的反馈消息时:

                         i.              当消息内容为RegisteredWoker时,worker开启定期向master报活。开始报活后,若Master联系4个报活周期未收到worker心跳,则master认为worker已经不可用,从其维护的worker列表中移除连续未报活worker信息。若向master报活的worker并未在master维护的worker列表中,则master通知该worker重新进行注册。

                       ii.              若消息内容为RegisterWorkerFailed,则表示注册败,重试或退出。

你可能感兴趣的:(spark)