关于hadoop中容错机制

原创
2016/12/26 23:40
阅读数 101

用户上传文件以后,namenode会将文件拆成小块后,每个小块在不同的datanode上存上N(可以配置)份。任意一个datanode挂了,还有N-1份数据是正确的。N越大资源占用越多,可靠性越大。 针对文件记录:可以在磁盘上不同目录、不同分区存上N份。通过硬件本身提供的容错能力保证总有一份正确数据被保留下来。 同时hadoop自己也会做块的内容验证的: 针对文件内容:hadoop会记录每块内容的“内容摘要”,用于判断文件内容是否与文件记录相符合 针对文件记录:hadoop有版本验证、检查点、日志记录等方式保证内容正确 Hadoop实现容错的主要方法就是重新执行任务,单个任务节点(TaskTracker)会不断的与系统的核心节点(JobTracker)进行通信,如果一个TaskTracker在一定时间内(默认是1分钟)无法与JobTracker进行通信,那JobTracker会假设这个TaskTracker出问题挂了,JobTracker了解给每个TaskTracker赋予了那些map和reduce任务。 如果作业仍然在mapping阶段,其它的TaskTracker会被要求重新执行所有的由前一个失败的TaskTracker所执行的map任务。如果作业在reduce阶段,则其它的TaskTracker会被要求重新执行所有的由前一个失败的TaskTracker所执行的reduce任务。 Reduce任务一旦完成会把数据写到HDFS。因此,如果一个TaskTracker已经完成赋予它的3个reduce任务中的2个,那只有第三个任务会被重新执行。Map任务则更复杂一点:即使一个节点已经完成了10个map任务,reducer仍可能无法获取这些map任务的所有的输出。如果此时节点挂了,那它的mapper输出就不可访问了。所以已经完成的map任务也必须被重新执行以使它们的输出结果对剩下的reducing机器可用,所有的这些都是由Hadoop平台自动操作完成的。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部