揭秘Hadoop生态圈

2016-12-17 20:34林琳
科技视界 2016年26期

林琳

【摘 要】Hadoop的两大核心是HDFS和YARN。Hadoop是一个软件框架,能够对海量数据进行分布式处理。Hadoop的特点是可靠、高效、可伸缩。

【关键词】Hadoop;HDFS;YARN

0 引言

从诞生至今,Hadoop已经发展成为一个庞大的与大数据相关的软件生态系统。本文收集整理了跟Hadoop相关的Apache下的开源项目,主要是对 Hadoop生态系统有个初步的认识。那么Hadoop生态系统都包括哪些内容呢?

Hadoop生态系统主要包括分布式文件管理系统HDFS,分布式计算框架MapReduce,分布式协作服务Zookeeper,实时分布式数据库Hbase,数据仓库Hive,数据流处理Pig,数据挖掘Mahout,日志收集工具Flume,数据库ETL工具Sqoop,安装、部署、配置和管理工具Ambari。

Ambari(安装、部署、配置和管理工具)

Zookeeper (分布式协作服务)

Hive(数据仓库)

Pig(数据流处理)

Mahout(数据挖掘库)

Flume(日志收集工具)

Hbase(实时分布式数据库)

MapReduce(分布式计算框架)

Sqoop(数据库ETL工具)

HDFS(分布式文件系统)

1 HDFS(Hadoop分布式文件系统)

HDFS全称为Hadoop Distributed File System,这个概念源自于Google发表于2003年10月的GFS论文,HDFS是GFS克隆版,Hadoop和 HDFS 都是从GFS中派生的。

HDFS是一个高度容错的系统,不仅可以在低成本的通用硬件上运行,还能检测和应对硬件故障,是Hadoop数据存储管理的基础。

通过流式数据访问,HDFS提供高吞吐量应用程序数据访问功能,为跨多个机器存储大型文件提供了一种解决方案,适合带有大型数据集的应用程序。

NameNode:是一个Master节点。在Hadoop 1.0中,NameNode是HDFS 集群的一个单点故障。Hadoop 2.0出现后,HDFS利用Zookeeper解决了这个问题。NameNode的主要功能是处理客户端请求,管理HDFS的名称空间和数据块映射信息以及配置副本策略。

Secondary NameNode:Secondary NameNode并非NameNode必备。它只是用来辅助NameNode,分担其工作量的,在某些紧急情况下,可辅助恢复NameNode。

DataNode:DataNode是一个 Slave节点,用来存储数据,汇报存储信息给NameNode。

Client:Client的作用是切分文件和访问HDFS。它与NameNode交互时,能够获取文件位置信息,与DataNode交互,能够读取和写入数据。

2 Mapreduce(分布式计算框架)

MapReduce是一种是使用集群的并行、分布式算法处理大数据集的可编程计算模型,用以解决海量数据的计算问题。在大型集群中能够起到简化数据处理的作用。MapReduce遵循YARN的框架协议,能够在YARN上可以运行。

在MapReduce中,Map负责对数据集上的独立元素进行指定操作,形成中间结果键值对。Reduce负责对中间结果中相同“键”的所有“值”进行规约,得到最终结果。MapReduce这样的功能划分,非常适合在分布式并行环境里进行数据处理。

JobTracker:唯一一个Master节点,管理所有作业和错误处理,将任务分解成一系列子任务,并分派给TaskTracker。

TaskTracker:Slave节点,向JobTracker汇报任务状态。

Map Task:解析每条数据记录,传递给用户编写的map并执行,将输出结果写入本地磁盘。

Reducer Task:从Map Task的执行结果中,远程读取输入数据,对数据进行排序后分组传递给用户编写的reduce函数执行。

3 Hbase(分布式列存数据库)

HBase是一个构建在HDFS上的分布式列存储系统。HBase利用MapReduce来处理海量数据,将数据存储和并行计算完美地结合在一起。Bigtable使用Chubby服务,而HBase利用Zookeeper作为对应。和传统关系数据库不同,HBase采用了BigTable的数据模型,增强的稀疏排序映射表,是一个针对结构化数据的动态模式数据库,具有可伸缩、高可靠、高性能、分布式和面向列的特性。从逻辑上讲,HBase将数据按照表、行和列进行存储。与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加服务器来增加计算和存储能力。HBase是Hadoop生态系统中的重要一员,主要用于海量结构化数据存储。

HBase提供了对大规模数据的随机、实时读写访问。

Hbase的数据模型

Schema-->Table-->Column

Family-->Column-->RowKey-->TimeStamp-->Value

RowKey:是表中每条记录的“主键”,方便快速查找。

Column Family:列族,包含一个或者多个相关列。

Column:属于某一个columnfamily,每条记录可动态添加。

Version Number:类型为Long,默认值是系统时间戳,可由用户自定义。

Value(Cell):Byte array

4 Zookeeper(分布式协作服务)

Zookeeper是一个针对大型分布式系统的可靠协调系统,用来解决分布式环境下的数据管理问题:如状态同步,集群管理,配置维护、名字服务、分布式同步等。

ZooKeeper能够配置信息维护,包括封装关键服务,提供简单易用的接口和功能稳定的系统。在一个分布式的环境中,我们需要一个 Master 实例或存储一些配置信息,来确保文件写入的一致性等。Zookeeper提供了这样一个高效可靠的协同工作系统。

Zookeeper的作用是,通过选举,使集群中始终只有一个Master存在,实时监控Region server的上线和下线信息。并实时通知给Master。

5 Hive(基于Hadoop的数据仓库)

Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为能在Hadoop上执行的MapReduce任务。通常用于数据汇总,查询和离线分析。最初用于解决日志数据统计问题。

6 Pig(基于Hadoop的数据流系统)

Pig在 Hadoop 分布式文件系统,HDFS,MapReduce中都能够运行,使用 MapReduce来执行数据处理。Pig提供了一个能够在Hadoop并行执行数据流的引擎。Pig 用Pig Latin语言来表达数据流,包括大量的传统数据操作,也可以让用户开发自己的函数,查看,处理和编写数据。也可以编写一个或者多个的 MapReduce 作业,然后执行。

7 Mahout(数据挖掘算法库)

Mahout是一种基于MapReduce的机器学习库和数学库。

Mahout旨在创建一些可扩展的经典算法的实现,能够帮助开发人员更方便快捷地创建智能应用程序。Mahout现在已经包含了聚类、分类、协同过滤和频繁集挖掘等数据挖掘方法。

Mahout起源于2008年,最初是Apache下的一个的子项目,在极短的时间内飞速发展,现在已经是Apache的顶级项目之一。

8 Sqoop(数据同步工具)

Sqoop是SQL-to-Hadoop的缩写,主要用于在传统数据库和Hadoop之间进行数据传输。Sqoop充分利用了Mapreduce的并行化和容错性,来进行数据的导入和导出,通常用于进行离线分析。

9 Flume(日志收集工具)

Flume是一个可扩展、开源的、适合复杂环境的海量日志收集系统。它具有分布式、高可靠、高容错、易扩展的优点。

它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,Flume支持收集各种不同协议数据。同时提供对日志数据进行简单处理的能力,如过滤、格式转换等。

【参考文献】

[1]陆嘉恒.Hadoop实战[M].机械工业出版社,2011,10.

[2]Tom White.Hadoop:The Definitive Guide[M].东南大学出版社,2011,5.

[责任编辑:田吉捷]