本文将分析Hadoop MapReduce(包括MRv1和MRv2)的两种常见的容错场景,第一种是,作业的某个任务阻塞了,长时间占用资源不释放,如何处理?另外一种是,作业的Map Task全部运行完成后,在Reduce Task运行过程中,某个Map Task所在节点挂了,或者某个Map Task结果存放磁盘损坏了,该如何处理?

我最近将出版的一本新书《Hadoop技术内幕:深入解析YARN架构设计与实现原理》,这本书与我之前写的书籍 《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》是一个系列,写作思路也是一样的,但是讲解的是不同系统,彼此之间没有重复。欢迎大家关注。

不管在MRv1还是MRv2中,MapReduce应用程序编程接口(API)是一致的。为了能够让用户应用程序平滑迁移到Hadoop 2.0中,MRv2尽可能得保证编程接口的向后兼容性,但由于MRv2本身进行了改进和优化,它在向后兼容性方面存在少量问题,而这正是本文所要介绍的。

在Hadoop 0.20.x版本或者更早的版本,Hadoop采用了平级队列组织方式,在这种组织方式中,管理员可将用户分到若干个扁平队列中,在每个队列中,可指定一个或几个队列管理员管理这些用户,随着Hadoop应用越来越广泛,有用户提出需支持层级队列组织方式。

随着MapReduce的流行,其开源实现Hadoop也变得越来越受推崇。在Hadoop系统中,有一个组件非常重要,那就是调度器,它的作用是将系统中空闲的资源按一定策略分配给作业。在Hadoop中,调度器是一个可插拔的模块,用户可以根据自己的实际应用要求设计调度器。本文介绍了Hadoop中常见的三种调度器。