MapReduce Fault-Tolerance
服务器容错设计
Node Manager向Resource Manager发送心跳包。服务器宕机后,Resource Manager会通知所有受影响的Application Master。Node Manager会追踪所有当前服务器上运行的任务。如果有正在进行中的任务被终止,Node Manager将任务标记为idle, 并且重启任务Application Master向Resource Manager发送心跳包。一旦心跳停止,Resource Manager重启Application Master,Application Master同步执行中任务的信息
Resource Manager容错设计
- 使用旧的
checkpoints,启动secondary Resource Manager
为了避免消息传输在网络中消耗过多的资源,container分配请求是通过心跳包传输的的
stragglers(落后者)
straggler是指集群中执行缓慢的任务。每个阶段,执行最慢的任务,决定了总体的速度。straggler的原因可能有很多:磁盘损坏、网络拥堵、CPU瓶颈、内存瓶颈
容错设计:
- 跟踪记录每个任务的进度
speculative execuation: 对straggler另起一份副本执行(repliacted execuation)。一旦其中一份副本(replica)执行完成,整个任务被标记为完成。
假设job1、job2、job3的完成进度分别为90%、50%、10%。Application Master会在另一台服务器上运行job3的replica。一旦其中一个job3完成,整个任务会被标记为完成。
地方性(locality)
- 云具有继承性拓扑,机架内通信一般会快于跨核心交换机的通信
- 数据被分成
chunk,在不同机架备份三份 - MapReduce 会根据网络距离调度任务 : 拥有对应数据副本的节点 > 在同一机架的节点 > 任意地点