MapReduce是如何错的
由于mapreduce要处理海量的数据,需要驱动成千上百的节点,如果节点出了问题,要如何处理呢?
worker节点出现故障
对应到hadoop mapreduce,就是在datanode上运行的worker出现了故障。解决的方法是master节点定期ping slave节点,如果收不到这个节点返回的信息,那么这个slave节点就会被标记失效,这个节点的任务就由其他的空闲节点完成。
当 worker 故障时,由于已经完成的 Map 任务的输出存储在这台机器上,Map 任务的输出已不可访问了,因此必须重新执行。而已经完成的 Reduce 任务的输出存储在全局文件系统上,因此不需要再次执行。
同时,由于Reducer需要得知Mapper保存的数据的地址,当一个Mapper失效之后,这个Mapper的任务交给其他节点运行的时候,所有的节点都会被通知,防止有节点从这个节点获取信息。
master节点出现故障
master需要定期将master维护的数据定期保存在其他的节点。也就是chekpoint,如果这个节点出现了故障,就会从这个checkpoint来恢复。开始启动新的master进程。
最好还是在master节点发生故障的时候,就终止mapreduce计算,因为master进程一般只启动一个。
(mapreduce论文)http://blog.bizcloudsoft.com/wp-content/uploads/Google-MapReduce中文版_1.0.pdf