首先我们先了解一下Hadoop的起源。然后介绍一些关于Hadoop生态系统中的具体工具的使用方法。如:HDFS、MapReduce、Yarn、Zookeeper、Hive、HBase、Oozie、Mahout、Pig、Flume、Sqoop。

Hadoop的起源

Doug Cutting是Hadoop之父 ,起初他开创了一个开源软件Lucene(用Java语言编写,提供了全文检索引擎的架构,与Google类似),Lucene后来面临与Google同样的错误。于是,Doug Cutting学习并模仿Google解决这些问题的办法,产生了一个Lucene的微缩版Nutch。

后来,Doug Cutting等人根据2003-2004年Google公开的部分GFS和Mapreduce思想的细节,利用业余时间实现了GFS和Mapreduce的机制,从而提高了Nutch的性能。由此Hadoop产生了。

Hadoop于2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入Hadoop的项目中。 
关于Hadoop名字的来源,是Doug Cutting儿子的玩具大象。

Hadoop是什么

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

在一个宽泛而不断变化的分布式计算领域,Hadoop凭借什么优势能脱颖而出呢? 
1. 运行方便:Hadoop是运行在由一般商用机器构成的大型集群上。Hadoop在云计算服务层次中属于PaaS(Platform-as-a- Service):平台即服务。 
2. 健壮性:Hadoop致力于在一般的商用硬件上运行,能够从容的处理类似硬件失效这类的故障。 
3. 可扩展性:Hadoop通过增加集群节点,可以线性地扩展以处理更大的数据集。 
4. 简单:Hadoop允许用户快速编写高效的并行代码。

Hadoop的生态系统

  • 2) Nutch,互联网数据及Nutch搜索引擎应用
  • 3) HDFS,Hadoop的分布式文件系统
  • 5) MapReduce,分布式计算框架
  • 6) Flume、Scribe,Chukwa数据收集,收集非结构化数据的工具。
  • 7) Hiho、Sqoop,讲关系数据库中的数据导入HDFS的工具
  • 8) Hive数据仓库,pig分析数据的工具
  • 10)Oozie作业流调度引擎
  • 11)Hue,Hadoop自己的监控管理工具
  • 12)Avro 数据序列化工具
  • 13)mahout数据挖掘工具
  • 14)Hbase分布式的面向列的开源数据库

Hadoop生态系统的特点

  • 源代码开源
  • 社区活跃、参与者众多
  • 涉及分布式存储和计算的方方面面
  • 已得到企业界验证

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

上面的图可能有些乱,下面我们用一个简易的Hadoop生态系统图谱来描述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的概述,如果想了解HDFS详情,请查看HDFS详解这篇文章。

HDFS具有如下特点:

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

HDFS的基本原理

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

HDFS的应用场景

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

Yarn(资源管理系统)


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

此处只是Yarn的概述,如果想了解Yarn详情,请查看Yarn详解这篇文章。

Yarn具有如下特点:

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


MapReduce(分布式计算框架)


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

此处只是MapReduce的概述,如果想了解MapReduce详情,请查看MapReduce详解这篇文章。

MapReduce具有如下特点:

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


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的概述,如果想了解Hive详情,请查看Hive详解这篇文章。

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的概述,如果想了解Pig详情,请查看Pig详解这篇文章。

Pig与Hive的比较


Mahout(数据挖掘库)


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


HBase(分布式数据库)


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

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

此处只是HBase的概述,如果想了解HBase详情,请查看HBase详解这篇文章。

HBase的特点

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

HBase的数据模型

下面简要介绍一下:

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

Zookeeper(分布式协作服务)


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

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

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

Zookeeper的应用

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

Sqoop(数据同步工具)


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

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

此处只是Sqoop的概述,如果想了解Sqoop详情,请查看Sqoop详解这篇文章。


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和其他组件。


Oozie(作业流调度系统)


目前计算框架和作业类型种类繁多:如MapReduce、Stream、HQL、Pig等。这些作业之间存在依赖关系,周期性作业,定时执行的作业,作业执行状态监控与报警等。如何对这些框架和作业进行统一管理和调度?

解决方案有多种:

  1. Linux Crontab
  2. 自己设计调度系统(淘宝等公司)
  3. 直接使用开源系统(Oozie)

Hadoop发行版(开源版)介绍

  • Apache Hadoop

推荐使用2.x.x版本

下载地址:http://hadoop.apache.org/releases.html

  • CDH(Cloudera Distributed Hadoop)

推荐使用CDH5版本

下载地址:http://archive.cloudera.com/cdh5/cdh/5/

详细安装步骤查看文章:搭建5个节点的hadoop集群环境(CDH5)

  • HDP(HortonWorks Data Platform)

推荐使用HDP2.x版本

下载地址:http://zh.hortonworks.com/downloads/#data-platform

最后建议:关于不同发行版在架构、部署和使用方法一致,不同之处仅在于内部实现。建议选择公司发行版,比如CDH或者HDP,因为它们经过集成测试,不会面临版本兼容性问题。

Hadoop生态系统相关推荐

  1. Hadoop 生态系统

    当下 Hadoop 已经成长为一个庞大的生态体系,只要和海量数据相关的领域,都有 Hadoop 的身影.下图是一个 Hadoop 生态系统的图谱,详细列举了在 Hadoop 这个生态系统中出现的各种数 ...

  2. GitChat · 大数据 | 一步一步学习大数据:Hadoop 生态系统与场景

    目录(?)[-] Hadoop概要 Hadoop相关组件介绍 HDFS Yarn Hive HBase Spark Other Tools Hadoop集群硬件和拓扑规划 硬件配置 软件配置 Hado ...

  3. Hadoop概念学习系列之Hadoop 生态系统

    当下 Hadoop 已经成长为一个庞大的生态体系,只要和海量数据相关的领域,都有 Hadoop 的身影.下图是一个 Hadoop 生态系统的图谱,详细列举了在 Hadoop 这个生态系统中出现的各种数 ...

  4. 手把手教你搭建Hadoop生态系统伪分布式集群

    Hello,我是 Alex 007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了. 手把手教你搭建Hadoop生态 ...

  5. Hadoop生态系统的详细介绍

    hadoop生态系统的详细介绍 简介 Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算.今 ...

  6. 阿里巴巴飞天大数据架构体系与Hadoop生态系统

    很多人问阿里的飞天大数据平台.云梯2.MaxCompute.实时计算到底是什么,和自建Hadoop平台有什么区别. 先说Hadoop 什么是Hadoop? Hadoop是一个开源.高可靠.可扩展的分布 ...

  7. 试述hadoop生态系统以及每个部分的具体功能_Hadoop在大数据分析中的意义和作用...

    什么是Hadoop? Apache Hadoop是一个开放源代码软件框架,用于开发在分布式计算环境中执行的数据处理应用程序. 使用HADOOP构建的应用程序可在分布在商用计算机群集上的大型数据集上运行 ...

  8. 大数据学习笔记:Hadoop生态系统

    文章目录 一.Hadoop是什么 二.Hadoop生态系统图 三.Hadoop生态圈常用组件 (一)Hadoop (二)HDFS (三)MapReduce (四)Hive (五)Hbase (六)Zo ...

  9. Hadoop生态系统常用组件导图

    Hadoop生态系统主要组件导图: 看大图

  10. hadoop生态系统的详细介绍-详细一点

    前提 日常喜欢看一些微信分享的好文,总结下来,可以作为过滤器吧(节约更多人的时间!),在这里引用的是别人的文章!对原文的作者表示感谢!确实写的很好! hadoop生态系统的详细介绍 简介 Hadoop ...

最新文章

  1. 最快捷的PPT技能提升之路 PPT定制 驼峰设计
  2. java生成动态验证码_动态生成验证码案例
  3. [vue] 怎么缓存当前打开的路由组件,缓存后想更新当前组件怎么办呢?
  4. Flink的异步I/O及Future和CompletableFuture
  5. 你好,请查收这封元旦祝福,CSDN云计算改版啦!
  6. opc服务器不显示目录,本地OPC服务器无法显示
  7. ENSP配置 实例九 动态Nat配置
  8. mysql批量取消多行sql_mysql批量删除指定前缀的表,批量修改表名的SQL语句
  9. 蓝桥杯 ADV-112 算法提高 c++_ch02_01
  10. 英特尔“Beach”图片泄露 Optane SSD路线图成关注焦点
  11. 再谈Redis应用场景
  12. C语言编译器字母怎么输入,c语言编译器怎么使用,c语言编译器下载使用教程
  13. Proteus 里面library文件夹找不到,怎么找到library文件夹。
  14. Learn OpenCV之Rotation Matrix To Euler Angles
  15. 服务器MYSQL 数据库搭建 win2008 x64
  16. 设计模式之 Vistor 访问者模式:Swift 实现
  17. 记理光MP5503一体机扫描到域计算机共享文件夹一事
  18. 五分之一金融机构将从2018年开始探索加密货币交易
  19. 微信公众号查看粉丝信息接口
  20. 计算机网络之网络层-数据报网络与虚电路网络

热门文章

  1. hive:函数:日期比较函数:获取当前日期 + date_add + date_sub函数获取前几天或后几天的日期
  2. MATLAB用相干解调DSB信号,AM DSB信号解调的MATLAB实现
  3. 罗技蓝牙鼠标连接电脑教程
  4. 十分nb且详细的Elasticsearch教程
  5. access是用来干什么的_access是干什么用的
  6. 【Stream】java8新特性Stream流总结
  7. 使用unbound在RHEL7上搭建DNS服务
  8. Think Python 2e 中文版
  9. STM32H7 ADC hal库
  10. 马王堆版《道德经》--原原本本的帛书版(转载)