executor lost处理
2016-12-21 11:12:25 0 举报
”executor lost”通常在执行任务时出现,表示执行器(通常是线程或进程)已经丢失或停止运行。这可能是由于系统资源不足、程序错误或其他未知原因导致的。为了解决这个问题,可以尝试重启执行器、增加系统资源或检查程序代码以找出潜在的问题。在某些情况下,可能需要联系技术支持或寻求专业人士的帮助来解决问题。总之,”executor lost”是一个常见的执行器故障,需要及时处理以确保程序的正常运行。
作者其他创作
大纲/内容
如果executor未作为offer 使用过并且之前没有收到过executorlost消息移除掉executorIdToTask的数据和executorToHost的数据,如果失败原因已经知晓通知TasksetManager完成task的失败处理
Appclient
executorLost
kill-executor-thread异步执行
removeExcutor
executor lost有两种触发条件,一种是executor退出,触发worker跟master发送ExecutorStateUpdate事件,master同步将该事件发送给driver;一种是heartbeatReceiver检测到executor超时worker挂掉后executor的lost原因是slavelost, 如果触发executorUpdate事件之前,该executor已经被heartbeatReceievr通过调用coaseschdulerback将其加入到pendingremove中,其余的都是executorExit
第一次收到ExcutorLoss消息调用executorLost(id)
之前已经接受到过LossReasonPending未知的丢失错误调用removeExecutor删除executor,如果本次错误原因知晓,通知TasksetManager完成task的失败处理
告知master杀掉相应的executors
kiilExecutors
告知executor已经被删除了
SparkDeploySchedulerBackend
ExcutorUpdate
killAndReplaceExecutor
onExcutorRemoveworker挂掉的情况没有 exitcode
DagScheduler
单线程通知相应的listener进行处理
SparkListenerBus
SparkContext
杀死掉executor可能触发driver中executorBackend的两次removeExcutor一次为worker发出的Executorupdate事件,一次为 driver的ondisconnect监听
handleExecutorLost(如果上次失败后epoch没变则不做任何操作)1、更新失败的executor的epoch2、删除本地记录的mapoutTracer上该executor对应的纪录3、删除BlockManagerMasterEndpoint上该executor的block信息
发布SparkListenerExecutorRemoved
dagprocesor线程处理Lost事件
CoarseGrainedSchedulerBackend
HeartBeatReceiver
Master
将事件ExecutorLost放入异步队列中
每隔60s去检测是否有executor超时
TaskSchedulerImpl
封装为excutorRemove事件
0 条评论
回复 删除
下一页