Hadoop生态系统

Hadoop是什么

Hadoop是一个开源框架,可编写和运行分布式应用处理大规模数据。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分布式文件系统,MapReduce 是分布式数据处理模型和执行环境。

Hadoop生态系统的各组成部分详解

Hadoop1.0时代的生态系统如下:

Hadoop2.0时代的生态系统如下:

Hadoop的核心

由上图可以看出Hadoop1.0与Hadoop2.0的区别。Hadoop1.0的核心由HDFS(Hadoop Distributed File System)和MapReduce(分布式计算框架)构成。而在Hadoop2.0中增加了Yarn(Yet Another Resource Negotiator),来负责集群资源的统一管理和调度。

HDFS(分布式文件系统)

HDFS源自于Google发表于2003年10月的GFS论文,也即是说HDFS是GFS的克隆版。

HDFS具有如下特点:

  1. 良好的扩展性
  2. 高容错性
  3. 适合PB级以上海量数据的存储

HDFS的基本原理

  • 将文件切分成等大的数据块,存储到多台机器上
  • 将数据切分、容错、负载均衡等功能透明化
  • 可将HDFS看成容量巨大、具有高容错性的磁盘

HDFS的应用场景

  • 海量数据的可靠性存储
  • 数据归档

YARN(资源管理系统)

Yarn是Hadoop2.0新增的系统,负责集群的资源管理和调度,使得多种计算框架可以运行在一个集群中。

Yarn具有如下特点:

  1. 良好的扩展性、高可用性
  2. 对多种数据类型的应用程序进行统一管理和资源调度
  3. 自带了多种用户调度器,适合共享集群环境

MapReduce(分布式计算框架)

MapReduce源自于Google发表于2004年12月的MapReduce论文,也就是说,Hadoop MapReduce是Google MapReduce的克隆版。

MapReduce具有如下特点:

  1. 良好的扩展性
  2. 高容错性
  3. 适合PB级以上海量数据的离线处理

Zookeeper(分布式协作服务)

Zookeeper源自Google发表于2006年11月的Chubby论文,也就是说Zookeeper是Chubby的克隆版。

Zookeeper解决分布式环境下数据管理问题:

  1. 统一命名
  2. 状态同步
  3.  集群管理
  4.  配置同步

Zookeeper的应用

  • HDFS
  • Yarn
  • Storm
  • HBase
  • Flume
  • Dubbo
  • Metaq

Tez(DAG计算模型)

Tez是Apache最新开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,

即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,

这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。

目前hive支持mr、tez计算模型,tez能完美二进制mr程序,提升运算性能。

Spark(内存DAG计算模型)

Spark是一个Apache项目,它被标榜为“快如闪电的集群计算”。它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。

最早Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架。

Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍

HBase(分布式数据库)

hbase源自Google发表于2006年11月的Bigtable论文。也就是说,HBase是Google Bigtable的克隆版。

HBase可以使用shell、web、api等多种方式访问。它是NoSQL的典型代表产品。

HBase的特点

  1. 高可靠性
  2. 高性能
  3. 面向列
  4. 良好的扩展性

HBase的数据模型

下面简要介绍一下:

  • Table(表):类似于传统数据库中的表
  • Column Family(列簇):Table在水平方向有一个或者多个Column Family组成;一个Column Family 中可以由任意多个Column组成。
  • Row Key(行健):Table的主键;Table中的记录按照Row Key排序。
  • Timestamp(时间戳):每一行数据均对应一个时间戳;也可以当做版本号。

Hive(基于MR的数据仓库)

hive由facebook开源,最初用于解决海量结构化的日志数据统计问题;是一种ETL(Extraction-Transformation-Loading)工具。它也是构建在Hadoop之上的数据仓库;数据计算使用MR,数据存储使用HDFS。

Hive定义了一种类似SQL查询语言的HiveQL查询语言,除了不支持更新、索引和实物,几乎SQL的其他特征都能支持。它通常用于离线数据处理(采用MapReduce);我们可以认为Hive的HiveQL语言是MapReduce语言的翻译器,把MapReduce程序简化为HiveQL语言。但有些复杂的MapReduce程序是无法用HiveQL来描述的。

Hive提供shell、JDBC/ODBC、Thrift、Web等接口。

Hive应用场景

  1. 日志分析:统计一个网站一个时间段内的pv、uv ;比如百度。淘宝等互联网公司使用hive进行日志分析
  2. 多维度数据分析
  3. 海量结构化数据离线分析
  4. 低成本进行数据分析(不直接编写MR)

Pig(数据仓库)

Pig由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc数据分析工具。它通常用于进行离线分析。

Pig是构建在Hadoop之上的数据仓库,定义了一种类似于SQL的数据流语言–Pig Latin,Pig Latin可以完成排序、过滤、求和、关联等操作,可以支持自定义函数。Pig自动把Pig Latin映射为MapReduce作业,上传到集群运行,减少用户编写Java程序的苦恼。

Pig有三种运行方式:Grunt shell、脚本方式、嵌入式。

Pig与Hive的比较

 

Mahout(数据挖掘库)

Mahout是基于Hadoop的机器学习和数据挖掘的分布式计算框架。它实现了三大算法:推荐、聚类、分类。

 

Sqoop(数据同步工具)

Sqoop是连接Hadoop与传统数据库之间的桥梁,它支持多种数据库,包括MySQL、DB2等;插拔式,用户可以根据需要支持新的数据库。

Sqoop实质上是一个MapReduce程序,充分利用MR并行的特点,充分利用MR的容错性。

 

Flume(日志收集工具)

Flume是Cloudera开源的日志收集系统。

Flume的特点

  1. 分布式
  2. 高可靠性
  3. 高容错性
  4. 易于定制与扩展

Flume OG与Flume NG的对比

  • Flume OG:Flume original generation 即Flume 0.9.x版本,它由agent、collector、master等组件构成。

  • Flume NG:Flume next generation ,即Flume 1.x版本,它由Agent、Client等组件构成。一个Agent包含Source、Channel、Sink和其他组件。

转载请注明来源,谢谢:Linux备忘录 » Hadoop生态系统