Hadoop有两部分组成:
- HDFS(Hadoop DistributedFile System, Hadoop分布式文件系统)
- MapReduce
1. HDFS
Hadoop分布式文件系统由一个管理节点(NameNode)和N个数据节点(DataNode)组成,每个节点均是一台普通的计算机。
其底层实现为:把文件切割成若干个Block,然后把这些Block分散存储于不同的DataNode上,每个Block还可以复制数份存储于不同的DataNode上,达到容错容灾的目的。NameNode则是整个HDFS的核心,它通过维护一些数据结构,记录了每一个文件被切割成了多少个Block,这些Block可以从哪些DataNode中获得,各个DataNode的状态等重要信息。
2. MapReduce
MapReduce是一种简化并行计算的编程模型。MapReduce将复杂的运行于大规模集群上的并行运算过程高度的抽象到了两个函数:Map和Reduce。
1) Map将一组<key, value>数据一对一的映射为另外一组<key, value>数据,其映射的规则由一个函数指定;
2) Reduce是将一组<key, value>数据进行归约,这个归约的规则也是有一个函数来指定;
简而言之,Hadoop就是将大数据集分解成成百上千的小数据集,每个(或若干个)数据集分别由集群中的一个结点(一般就是一台普通的计算机)进行处理,并生成中间结果,然后这些中间结果又由大量的结点进行合并,形成最终结果。
计算模型的核心是Map和Reduce两个函数,这两个函数由用户负责实现,功能是按一定的映射规则将输入的<key, value>对转换成另一个或一批<key,value>对输出。