首先咱们先了解一下Hadoop的起源。而后介绍一些关于Hadoop生态系统中的具体工具的使用方法。如:HDFS、MapReduce、Yarn、Zookeeper、Hive、HBase、Oozie、Mahout、Pig、Flume、Sqoop。web
Doug Cutting是Hadoop之父 ,起初他开创了一个开源软件Lucene(用Java语言编写,提供了全文检索引擎的架构,与Google相似),Lucene后来面临与Google一样的错误。因而,Doug Cutting学习并模仿Google解决这些问题的办法,产生了一个Lucene的微缩版Nutch。算法
后来,Doug Cutting等人根据2003-2004年Google公开的部分GFS和Mapreduce思想的细节,利用业余时间实现了GFS和Mapreduce的机制,从而提升了Nutch的性能。由此Hadoop产生了。shell
Hadoop于2005年秋天做为Lucene的子项目Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被归入Hadoop的项目中。
关于Hadoop名字的来源,是Doug Cutting儿子的玩具大象。数据库
Hadoop是一个开源框架,可编写和运行分布式应用处理大规模数据。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分布式文件系统,MapReduce 是分布式数据处理模型和执行环境。api
在一个宽泛而不断变化的分布式计算领域,Hadoop凭借什么优点能脱颖而出呢?
1. 运行方便:Hadoop是运行在由通常商用机器构成的大型集群上。Hadoop在云计算服务层次中属于PaaS(Platform-as-a- Service):平台即服务。
2. 健壮性:Hadoop致力于在通常的商用硬件上运行,可以从容的处理相似硬件失效这类的故障。
3. 可扩展性:Hadoop经过增长集群节点,能够线性地扩展以处理更大的数据集。
4. 简单:Hadoop容许用户快速编写高效的并行代码。架构
上面的图可能有些乱,下面咱们用一个简易的Hadoop生态系统图谱来描述Hadoop生态系统中出现的各类数据工具。负载均衡
Hadoop1.0时代的生态系统以下:框架
Hadoop2.0时代的生态系统以下:机器学习
由上图能够看出Hadoop1.0与Hadoop2.0的区别。Hadoop1.0的核心由HDFS(Hadoop Distributed File System)和MapReduce(分布式计算框架)构成。而在Hadoop2.0中增长了Yarn(Yet Another Resource Negotiator),来负责集群资源的统一管理和调度。分布式
HDFS源自于Google发表于2003年10月的GFS论文,也便是说HDFS是GFS的克隆版。
此处只是HDFS的概述,若是想了解HDFS详情,请查看HDFS详解这篇文章。
Yarn是Hadoop2.0新增的系统,负责集群的资源管理和调度,使得多种计算框架能够运行在一个集群中。
此处只是Yarn的概述,若是想了解Yarn详情,请查看Yarn详解这篇文章。
MapReduce源自于Google发表于2004年12月的MapReduce论文,也就是说,Hadoop MapReduce是Google MapReduce的克隆版。
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等接口。
Pig由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc数据分析工具。它一般用于进行离线分析。
Pig是构建在Hadoop之上的数据仓库,定义了一种相似于SQL的数据流语言–Pig Latin,Pig Latin能够完成排序、过滤、求和、关联等操做,能够支持自定义函数。Pig自动把Pig Latin映射为MapReduce做业,上传到集群运行,减小用户编写Java程序的苦恼。
Pig有三种运行方式:Grunt shell、脚本方式、嵌入式。
Mahout是基于Hadoop的机器学习和数据挖掘的分布式计算框架。它实现了三大算法:推荐、聚类、分类。
HBase源自Google发表于2006年11月的Bigtable论文。也就是说,HBase是Google Bigtable的克隆版。
HBase可使用shell、web、api等多种方式访问。它是NoSQL的典型表明产品。
下面简要介绍一下:
Zookeeper源自Google发表于2006年11月的Chubby论文,也就是说Zookeeper是Chubby的克隆版。
Zookeeper解决分布式环境下数据管理问题:
Sqoop是链接Hadoop与传统数据库之间的桥梁,它支持多种数据库,包括MySQL、DB2等;插拔式,用户能够根据须要支持新的数据库。
Sqoop实质上是一个MapReduce程序,充分利用MR并行的特色,充分利用MR的容错性。
Flume是Cloudera开源的日志收集系统。
目前计算框架和做业类型种类繁多:如MapReduce、Stream、HQL、Pig等。这些做业之间存在依赖关系,周期性做业,定时执行的做业,做业执行状态监控与报警等。如何对这些框架和做业进行统一管理和调度?
解决方案有多种: