Hadoop2.X开源软件及生态系统的最新发展综合分析
一、Hadoop版本概述
目前Hadoop的发行版除了Apache的开源版本之外,还有华为发行版、Intel发行版、Cloudera发行版(CDH)、Hortonworks发行版(HDP)、MapR等,所有这些发行版均是基于Apache Hadoop衍生出来的,因为Apache Hadoop的开源协议允许任何人对其进行修改并作为开源或者商业产品发布。国内大多数公司发行版是收费的,比如Intel发行版、华为发行版等。不收费的Hadoop版本主要有国外的四个,分别是Apache基金会hadoop、Cloudera版本(CDH)、Hortonworks版本(HDP)、MapR版本。
二、Hadoop2.x基本原理与架构
Apache Hadoop 是一个开源软件框架,可安装在一个商用机器集群中,使机器可彼此通信并协同工作,以高度分布式的方式共同存储和处理大量数据。最初,Hadoop 包含以下两个主要组件:Hadoop Distributed File System (HDFS) 和一个分布式计算引擎,该引擎支持以 MapReduce 作业的形式实现和运行程序。Hadoop2.x相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更:
(1)HDFS的NameNode可以以集群的方式布署,增强了NameNode的水平扩展能力和高可用性,分别是:HDFS Federation与HA;
(2)MapReduce将Job Tracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN(Yet Another Resource Negotiator)。
图1 Hadoop2.x架构图
2.1 HDFS
2.1.1 HDFS概述
HDFS仍然采用master/slave模式。主控节点仍然是NameNode,从节点仍然是多个DataNode。NameNode记录数据集的元数据。由于每个大文件load到HDFS时,都会被分割成默认64MB的数据块(Block),且这些数据块被分散到多个DataNode中做并行处理,因此NameNode需要管理一个文件分成了哪些Block,这些Block又分散在哪些DataNode上。这些映射关系就是元数据。当DataNode上的Block发生变化时,需向NameNode报告更新元数据。客户端操作数据时,需向NameNode查询元数据,在查询到数据所在的DataNode后,直接与DataNode交互,执行读/写操作。不同的数据块Block会有多个副本(主要是为了数据安全)。Rack是机架,一份数据的多个副本可能存在不同机架的服务器上。