Spark之Master状态转换
在Driver与Executor的状态发生改变的时候他们会给Master发送一些信息,之后Master会根据这些状态准换的信息做出相应的动作。
Driver状态转换
当Driver的程序发生改变会向Master发送一个状态转换的信息。Master会根据传过来的DriverID找到对应的Driver,然后判断这个Driver的信息是否为终结状态(包括失败,杀掉,运行完毕等)然后将这个Driver从内存中删除,并且在completedDrivers(Driver结束队列)中加入Driver。然后使用持久化引擎删除Driver的持久化信息。然后设置当前Driver的状态为finalState,最后将Driver所在的Woker中删除当前Driver。
Executor状态转换
当Executor的状态发生变化的话,它也会给Master发送一些信息。Master首先会通过这个Executor找到对应的Application,然后反过来通过这个Application找到对应的Executor。如果这个Executor为正常退出的话那么Master就会将这个Executor从对应的Application的缓存中删除,同时也会从对应的Worker中删除。如果为非正常退出的话那么就会重新调度这个Executor如果调度的次数大于一个阈值的时候我们就认为这个Application也失败了。Master也就会删除这个Executor所在的Application。