1.Hadoop的整体框架
- Hadoop是由许多元素构成的,最核心的是HDFS(分布式文件系统),它存储了Hadoop集群中所有DataNode文件,HDFS的上一层是MapReduce引擎,MapReduce是一种计算模型,用以进行大数据量的计算。
HDFS
- HDFS是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。
- 它采用了主从结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成,其中NameNode作为主服务器管理文件系统的命名空间和客户端对文件的访问操作,而DataNode则负责管理存储的数据。HDFS底层数据被切割成了多个Block,而这些Block又被复制后存储在不同的DataNode上,以达到容错容灾的目的。
- HDFS由四部分组成,HDFS Client、NameNode、DtatNode和Secondary NameNode。
HDFS是一个主/从(Mater/Slave)体系结构,HDFS集群拥有一个NameNode和一些DataNode。NameNode管理文件系统的元数据,DataNode存储实际的数据。
MapReduce
- MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。采用的是分而治之的思想,首先把任务分发到集群的多个节点上,并行计算,然后再把计算结果合并,从而实现大规模数据的并行运算。而实现多点计算,所涉及的任务调度、负载均衡、容错处理等都是有MapReduce框架完成。
MapReduce 由 两 个 阶 段 组 成 :Map 和 Reduce
- map() 函数以 key/value 对作为输入,产生另外一系列 key/value 对作为中间输出写入本地 磁盘。
- MapReduce 框架会自动将这些中间数据按照 key 值进行聚集,且 key 值相同(用户可 设定聚集策略,默认情况下是对 key 值进行哈希取模)的数据被统一交给 reduce() 函数处理。
- reduce() 函数以 key 及对应的 value 列表作为输入,经合并 key 相同的 value 值后,产 生另外一系列 key/value 对作为最终输出写入 HDFS。
- 指定三个组件分别是 InputFormat、Partitioner 和 OutputFormat, 它们均需要用户根据自己的应用需求配置
- 指定输入 文件格式。将输入数据切分成若干个 split,且将每个 split 中的数据解析成一个个 map() 函数 要求的 key/value 对。
- 确定 map() 函数产生的每个 key/value 对发给哪个 Reduce Task 函数处 理。
- 指定输出文件格式,即每个 key/value 对以何种形式保存到输出文件中。