一些常见的故障
NM周期性的给RM发送heartbeats,如果RM发现server fails,则它会让所有与这个server有关的AM知道,让受影响的job的AM采取一些action,重新分配它的task.
目前为止还没有能监测到RM failure的情况,我们使用hard backup,如果fail则使用secondary RM
continer requests虽然使用heartbeats会较慢(因为它隔一段周期发送一次),但是它avoid extra messages.
Slow servers
the slowest machine slows the entire job down(why): 某个task阻塞会导致整个job延缓,如一个map task阻塞,则reduce task无法进行下去。
keep track of progress of each task:跟踪这个任务,看这个任务进行到了百分之多少。
Speculative execution: 当监测到某个task很慢时,这时AM就在另一个server上复制它,这时有两个相同的task在不同的server上运行,其中的任何一个运行完成,则标记这个task运行完成,结束另一个没有完成的task.
Locality:如何存储分配
在同一个rack里面communication要比在不同的rack,要经过core switch进行communication要快些
HDFS把每个chunk都保存3遍,其中两个保存在1个rack上面,另一个保存在不同的rack上面(two different place),以防止其中一个rack goes down,另一个还可以使用
安排一个map task是按照如下的优先级: 存储input data的machine--> 与存储input data的machine在同一个rack--->任何其它地方
我们通常都将reduce task 与map task安排在同一个rack里面
Summary