Hadoop生态系统

参考

  • 《大数据技术原理与应用》第二版

HDFS

Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)
Hadoop项目两大核心之一
针对谷歌文件系统(Google File System, GFS)的开源实现

优点:

  • 处理超大数据
  • 流式处理
  • 可运行在廉价商用服务器上

HBase

提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,一般采用HDFS作为底层数据存储。
针对谷歌BigTable的开源实现

MapReduce

针对谷歌MapReduce的开源实现。
MapReduce: 编程模型,用于大规模数据集(大于1TB)的并行运算,将复杂的、运行在大规模集群上的并行计算过程高度抽象到两个函数上–Map和Reduce。允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,并将其运行在廉价计算机集群上,完成海量数据存储。
核心思想: 分而治之

Hive

基于Hadoop的数据仓库工具,可以用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储。
Hive学习门槛较低,因为提供了类似于关系数据库SQL语言的查询语句–HiveQL,可以通过HiveQL语句快速实现简单的MapReduce统计,Hive自身可以将HiveQL语句转换为MapReduce任务进行运行,不必开发专门的MapReduce应用,适合数据仓库的统计分析。

Pig

数据流语言和运行环境,适合于使用Hadoop和MapReduce平台查询大型半结构化数据集。
Pig简化了Hadoop常见的工作任务。在MapReduce的基础上创建了更简单的过程语言抽象,为Hadoop应用程序提供了一种更接近结构化查询语言的接口。

Mahout

提供一些可扩展的机器学习领域经典算法的实现,以帮助开发人员更加方便快捷地创建智能应用程序。
包含: 聚类、分类、推荐过滤、频繁子项挖掘。
通过Apache Hadoop库,Mahout可以有效地扩展到云中。

Zookeeper

针对谷歌Chubby的开源实现,高效和可靠的协同工作系统,提供分布式锁🔓之类的基本服务(如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理的管理等),用于构建分布式应用,减轻分布式应用程序承担的协调任务。
使用Java编写。使用和文件树相似的数据模型,可使用Java或C进行编程接入。

Flume

Cloudera提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。
Flume支持在日志系统中定制各类数据发送方,用于收集数据。
Flume提供对数据进行简单处理并写入各种数据接收方的能力。

Sqoop

SQL-to-Hadoop,主要用来在Hadoop和关系型数据库之间交换数据,可以改进数据的互操作性。
将数据从MySQL、Oracle、PostgreSQL等关系型数据库中导入Hadoop(可以导入HDFS、HBase或Hive)
将数据从Hadoop导出到关系型数据库

主要通过JDBC(Java DataBase Connectivity)和关系型数据库进行交互,理论上支持JDBC的关系型数据库都可以使Sqoop和Hadoop进行数据交互。

专为大数据集设计,支持增量更新,可以将新纪录添加到最近一次导出的数据源上,或者指定上次修改的时间戳。

Ambari

基于Web的工具,支持Apache Hadoop集群的安装、部署、配置和管理。
支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、HBase、Zookeeper、Sqoop等


comment: