Apache Hadoop
Apache Hadoop是一款支持数据密集型分布式应用程序的开源软件框架,有助于使用许多计算机组成的网络来解决数据、计算密集型的问题。基于MapReduce计算模型,它为大数据的分布式存储与处理提供了一个软件框架。所有的Hadoop模块都有一个基本假设,即硬件故障是常见情况,应该由框架自动处理。
Apache Hadoop的核心模块分为存储和计算模块,前者被称为Hadoop分布式文件系统(HDFS),后者即MapReduce计算模型。Hadoop框架先将文件分成数据块并分布式地存储在集群的计算节点中,接着将负责计算任务的代码传送给各节点,让其能够并行地处理数据。这种方法有效利用了数据局部性,令各节点分别处理其能够访问的数据。与传统的超级计算机架构相比,这使得数据集的处理速度更快、效率更高。
Apache Hadoop框架由以下基本模块构成:
- Hadoop Common – 包含了其他Hadoop 模块所需的库和实用程序;
- Hadoop Distributed File System (HDFS) – 一种将数据存储在集群中多个节点中的分布式文件系统,能够提供很高的带宽;
- Hadoop YARN – 一个负责管理集群中计算资源,并实现用户程序调度的平台;
- Hadoop MapReduce – 用于大规模数据处理的MapReduce计算模型实现;
- Hadoop Ozone – Hadoop的对象存储。
MapReduce
MapReduce是Google提出的一个软件架构,用于大规模数据集的并行运算。概念“Map(映射)”和“Reduce(归约)”,及他们的主要思想,都是从函数式编程语言借鉴的,还有矢量编程语言借来的特性。
当前的软件实现是指定一个“Map”(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的“Reduce”(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。