Hadoop2.0的核心包括分布式文件管理系统(HDFS)、资源管理和调度框架YARN和分布式计算框架MapReduce.
- HDFS是一个具有高容错性的文件系统,适合部署在廉价的机器上,并且能够提供高吞吐量的数据访问,非常适合大规模数据集上的应用。MapReduce、Spark等大数据 处理框架要处理的数据源大部分都存储再HDFS上,Hive、HBase等框架的数据通常也存储在HDFS上。简而言之,HDFS为大数据存储提供了保障。
- YARN解决了Hadoop1.0资源利用率低和不能兼容异构计算框架等多种问题,提供了资源隔离方案和双调度器解决方案,可在YARN上运行MapReduce、Spark、Storm、Tez等各种不同类型的计算框架。
- MapReduce是一个分布式、并行处理的编程模型。开发人员可以在不了解分布式系统底层框架设计原理和缺少并行应用开发经验的情况下,就能使用MapReduce计算框架快速轻松地编写出分布式并行程序,完成对大规模数据集的并行计算。MapReduce利用函数式编程思想,将复杂的、并行域大规模集群上的并行计算高度抽象为Map和Reduce两个函数,其中Map是对可以并行处理的小数据集进行本地计算并输出中间结果,Reduce是对各个Map的输出结果进行汇总计算得到最终结果。
- Hive是一个基于Hadoop的数据仓管理工具。Hive可以让不熟悉Hadoop的开发人员直接编写出SQL语句,实现对大规模数据的统计分析操作。此外,Hive还可以将SQL语句转换成MapReduce作业,并提交到Hadoop集群上运行,Hive大大降低了学习门槛,同时也提升了开发效率。
一、HDFS
HDFS采用主从架构,主要有NameNode和DataNode组成。NameNode作为管理节点,主要存储每个文件的块信息,并控制数据的读写过程,而DataNode作为数据节点,主要用于存储真实数据。HDFS通过FsIMage和EditLog两个主要元数据文件来管理整个文件系统,理解这些文件的作用才能掌握HDFS的文件存储机制。
HDFS中的数据以文件块Block的形式存储。Block是最基本的存储单位,每次读写的最小单元是一个Block。HDFS采用多副本方式对数据进行冗余存处,通常一个数据块的多个副本会被分不到不同的DataNode上。
作为分布式文件存储系统,HDFS设计和实现了多种机制来保证可靠性,即系统出错时尽可能保证数据不丢失或损坏。除了基本的元数据备份,HDFS还提供了其他多种技术和方法来提高文件系统的可靠性,例如,建立Secondary NameNode和NameNode协同工作机制;创建NameNode的完整备份Backup Node,以便在NameNode故障时进行切换;使用HDFS NameNode HA机制解决NameNode机制解决单点故障问题;使用HDFS Federation联邦机制实现集群扩散性和良好隔离性;使用HDFS Snapshots快照机制来防止用户误操作、备份、灾难恢复。
二、MapReduce
MapReduce是Hadoop生态中的一款分布式计算框架,它提供了非常完善的分布式框架,可以让不熟悉分布式计算的人员也能编写出优秀的分布式系统。MapReduce就是“任务的分解与结果的汇总”。采用“分而治之”的思想,可以先将一个大型任务拆分成若干个简单的子任务,然后将每个子任务交给一个独立的结点去处理(Map阶段)。当所有结点的子任务都处理完毕后,再汇总所有子任务的处理结果(Reduce阶段),从而形成最终的结果。“拆分”任务的过程称为Map阶段,“汇总”任务的过程称为Reduce阶段。
MapReduce1.0采用的是经典的Master/Slave结构,Master表现为JobTracker进程,而Slaver表现为TaskTracker. 由于存在种种问题,研究人员对MapReduce体系架构进行了重新设计,生成了MapReduce2.0和YARN.
MapReduce作业的执行流程主要分为InputFormat、Map、Shuffle、Reduce、OutputFormat五个阶段。其中,Map阶段的业务代码需要继承自org.apache.hadoop.mapreduce.Mapper类;Reduce阶段的业务代码需要继承自org.apache.hadoop.mapreduce.Reduce类;Shuffle阶段是MapReduce的心脏,关乎整个框架性能,可以对Map的输出进行一定的排序(Sort)、分区(Partition)、合并(Combine)等操作,得到<key, List(value)>形式的中间

最低0.47元/天 解锁文章
279

被折叠的 条评论
为什么被折叠?



