Spark源码分析随笔:(deploy模块)
本模块包含3个文件夹,分别为
1. Master
2. Worker
3. Client
以及其他少量文件,我们先将他们解决掉。
1. 一个类文件ApplicationDescription用来描述用户传来的应用
其中包含5个val描述信息,分别是
name(String) application的名字
cores(Int) 核数
memoryPerSlave(Int) 每个slave的内存大小
command(Command)ß<<<<<<<<<<<<<Command类
sparkHome(String)
1个var变量 user =System.getProperty(“user.name”,”<unknown>”)
override toString方法:在name前加上”ApplicationDescription”字段
2、command类
mainClass(String)
arguments:Seq[String]
environment:Map[String,String]
3、DeployMessage.scala (关键文件)
定义了trait(特质) DeployMessage以及其他
14个类 和 3个对象(全部都extends DeployMessage )
包括:
Worker向Master发送的信息集合
ü RegisterWorker worker的注册信息
ü ExecutorStateChanged app执行状态的装换信息
ü Heartbeat(workerId:String) 每个worker的心跳检测
Master向worker发送的信息集合
ü RegisteredWorker(masterWebUiUrl) 已经注册的worker信息
ü RegisterWorkerFailed(message) worker注册失败返回的消息
ü KillExecutor(appId:String,execId:Int) 结束掉某个app任务
ü LaunchExecutor 开始某个app的执行
Client向master发送的信息集合
ü RegisterApplication(appDescription:ApplicationDescription) Client向Master提交app
Master向client发送的信息集合
ü RegisteredApplication(appId) 已经成功注册的app
ü ExecutorAdded(id,workerId,host,cores,memory) 添加worker
ü ExecutorUpdated(id,state,message) 更新执行状态
ü appKilled 发送已经结束掉的app信息
Client的内部消息
Object StopClient 结束当前Client
MasterWebUI ToMaster
Object RequestMasterState 请求当前Master的状态信息
Master 返回给MasterWebUI的消息
MasterState(host,port,workers,activeApps,completeApps)
Defuri = “spark://”+host+”:”+port 返回Master自己当前的状态
WorkerWebUI ToMaster
Object RequestWorkerState 请求当前Worker的状态信息
Worker 返回给MasterWebUI的消息
WorkerState(host,port,workerId,executors,finishedExecutors,masterUrl,cores,memory,coresUsed,memoryUsed,masterWebUiUrl)
Defuri = “spark://”+host+”:”+port 返回Master自己当前的状态
4.ExecutorState (Object)
extendsEnumeration("LAUNCHING","LOADING", "RUNNING", "KILLED","FAILED", "LOST")
def isFinished()
5.jsonProtocol (Object )
定义了json文件格式的协议
6.LocalSparkCluster(Class)
其中this(numworkers,coresPerWorkers,memoryPerWorker)
localIpAddress
masterActorSystems
workerActorSystem
start()
stop()
7.WebUI (Object)
定义了日期时间的输出格式formatDate