第2章 任务的执行
2.1 概述
2.1.1 任务切分和任务调度原理


2.1.2 本地化调度
任务分配原则:根据每个Task的优先位置,确定Task的Locality(本地化)级别,本地化一共有五种,优先级由高到低顺序:
移动数据不如移动计算。
|
名称 |
解析 |
|
PROCESS_LOCAL |
进程本地化,task和数据在同一个Executor中,性能最好。 |
|
NODE_LOCAL |
节点本地化,task和数据在同一个节点中,但是task和数据不在同一个Executor中,数据需要在进程间进行传输。 |
|
RACK_LOCAL |
机架本地化,task和数据在同一个机架的两个节点上,数据需要通过网络在节点之间进行传输。 |
|
NO_PREF |
对于task来说,从哪里获取都一样,没有好坏之分。 |
|
ANY |
task和数据可以在集群的任何地方,而且不在一个机架中,性能最差。 |
2.1.3 失败重试与黑名单机制
Task运行失败会被告知给TaskSetManager,对于失败的Task,会记录它失败的次数,如果失败次数还没有超过最大重试次数,那么就把它放回待调度的Task池子中,否则整个Application失败。
失败同时会记录它上一次失败所在的Executor Id和Host,使用黑名单机制,避免它被调度到上一次失败的节点上,起到一定的容错作用。黑名单记录Task上一次失败所在的Executor Id和Host,以及其对应的“拉黑”时间,“拉黑”时间是指这段时间内不要再往这个节点上调度这个Task了。

被折叠的 条评论
为什么被折叠?



