Spark 启动过程(standalone)

来源:互联网 发布:单片机开发板工作原理 编辑:程序博客网 时间:2024/06/03 15:15

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,则表示注册败,重试或退出。

0 0
原创粉丝点击