下图为大家展示了Hadoop生态圈体系中的主要组件以及它们彼此之间的关系。
视频讲解如下:
这里先简单说明每一个组件的作用功能。
- HDFS
它的全称是Hadoop Distributed File System,它是Hadoop分布式文件系统,用于解决大数据的存储问题。HDFS源自于Google的GFS论文,可用于运行在低成本的通用硬件上,是一个具有容错的文件系统。
- HBase
基于HDFS之上的分布式列式存储NoSQL数据库,起源于Google的BigTable思想。由于HBase的底层是HDFS,因此HBase中创建的表和表中数据最终都是存储在HDFS上。HBase的核心是列式存储,它适合执行查询操作。
- MapReduce与Yarn
MapReduce是一种分布式计算模型,用以进行大数据量的计算,它是一种离线计算处理模型。MapReduce通过Map和Reduce两个阶段的划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。通过MapReduce既可以处理HDFS中的数据,也可以处理HBase中的数据。
Yarn(Yet Another Resource Negotiator,另一种资源协调者)是 Hadoop集群中的资源管理器。从Hadoop 2.x开始,MapReduce默认都是运行在Yarn之上。
在Hadoop的安装包中已经集成了HDFS与Yarn。因此Hadoop安装成功后,可以直接执行MapReduce任务处理HDFS的数据。
- 数据分析引擎Hive与Pig
Hive是基于HDFS之上的数据仓库,支持标准的SQL语句。默认情况下,Hive的执行引擎是MapReduce。Hive可以把一条标准的SQL转换成是MapReduce任务运行在Yarn之上。
Pig也是Hadoop中的数据分析引擎,支持PigLatin语句。默认情况下,Pig的执行引擎也是MapReduce。Pig允许处理结构化数据和半结构化数据。
Hive和Pig的执行引擎也可以是Spark,即:Hive on Spark和Pig on Spark。
- 数据采集引擎Sqoop和Flume
Sqoop的全称是SQL to Hadoop,它是一个数据交换工具,主要针对的关系型数据库,例如:Oracle、MySQL等。Sqoop数据交换的本质上是Mapreduce程序,它充分利用了MapReduce的并行化和容错性,从而提高了数据交换的性能。
Flume是一个分布式的、可靠的、可用的日志收集服务组件。它可以高效地收集、聚合、移动大量的日志日志数据。
Flume进行日志采集的过程其本质并不是MapReduce任务。
- 分布式协调服务ZooKeeper
ZooKeeper可以当成是一个“数据库”来使用,主要解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。同时在大数据架构中,利用ZooKeeper可以解决大数据主从架构的单点故障问题实现大数据的高可用性。
- 集成管理工具HUE
HUE是基于Web形式发布的集成管理工具,可以与大数据相关组件进行集成。通过HUE可以管理Hadoop中的相关组件,也可以管理Spark中的相关组件。