2.2 Hadoop MapReduce设计目标
通过上一节关于Hadoop MapReduce历史的介绍我们知道,Hadoop MapReduce诞生于搜索领域,主要解决搜索引擎面临的海量数据处理扩展性差的问题。它的实现很大程度上借鉴了谷歌MapReduce的设计思想,包括简化编程接口、提高系统容错性等。总结Hadoop MapReduce设计目标,主要有以下几个。
❑易于编程:传统的分布式程序设计(如MPI)非常复杂,用户需要关注的细节非常多,比如数据分片、数据传输、节点间通信等,因而设计分布式程序的门槛非常高。Hadoop的一个重要设计目标便是简化分布式程序设计,将所有并行程序均需要关注的设计细节抽象成公共模块并交由系统实现,而用户只需专注于自己的应用程序逻辑实现,这样简化了分布式程序设计且提高了开发效率。
❑良好的扩展性:随着公司业务的发展,积累的数据量(如搜索公司的网页量)会越来越大,当数据量增加到一定程度后,现有的集群可能已经无法满足其计算能力和存储能力,这时候管理员可能期望通过添加机器以达到线性扩展集群能力的目的。
❑高容错性:在分布式环境下,随着集群规模的增加,集群中的故障率(这里的“故障”包括磁盘损坏、机器宕机、节点间通信失败等硬件故障和坏数据或者用户程序bug产生的软件故障)会显著增加,进而导致任务失败和数据丢失的可能性增加。为此,Hadoop通过计算迁移或者数据迁移等策略提高集群的可用性与容错性。