首先我們先了解一下Hadoop的起源。然后介紹一些關(guān)于Hadoop生態(tài)系統(tǒng)中的具體工具的使用方法痛阻。如:HDFS、MapReduce腮敌、Yarn阱当、Zookeeper、Hive糜工、HBase弊添、Oozie、Mahout啤斗、Pig表箭、Flume、Sqoop钮莲。
Hadoop的起源
Doug Cutting是Hadoop之父 免钻,起初他開創(chuàng)了一個開源軟件Lucene(用Java語言編寫,提供了全文檢索引擎的架構(gòu)崔拥,與Google類似)极舔,Lucene后來面臨與Google同樣的錯誤。于是链瓦,Doug Cutting學習并模仿Google解決這些問題的辦法拆魏,產(chǎn)生了一個Lucene的微縮版Nutch。
后來慈俯,Doug Cutting等人根據(jù)2003-2004年Google公開的部分GFS和Mapreduce思想的細節(jié)渤刃,利用業(yè)余時間實現(xiàn)了GFS和Mapreduce的機制,從而提高了Nutch的性能贴膘。由此Hadoop產(chǎn)生了卖子。
Hadoop于2005年秋天作為Lucene的子項目Nutch的一部分正式引入Apache基金會。2006年3月份刑峡,Map-Reduce和Nutch Distributed File System(NDFS)分別被納入Hadoop的項目中洋闽。
關(guān)于Hadoop名字的來源玄柠,是Doug Cutting兒子的玩具大象。
Hadoop是什么
Hadoop是一個開源框架诫舅,可編寫和運行分布式應用處理大規(guī)模數(shù)據(jù)羽利。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分布式文件系統(tǒng)刊懈,MapReduce 是分布式數(shù)據(jù)處理模型和執(zhí)行環(huán)境这弧。
在一個寬泛而不斷變化的分布式計算領域,Hadoop憑借什么優(yōu)勢能脫穎而出呢虚汛?
1. 運行方便:Hadoop是運行在由一般商用機器構(gòu)成的大型集群上当宴。Hadoop在云計算服務層次中屬于PaaS(Platform-as-a- Service):平臺即服務。
2. 健壯性:Hadoop致力于在一般的商用硬件上運行泽疆,能夠從容的處理類似硬件失效這類的故障。
3. 可擴展性:Hadoop通過增加集群節(jié)點玲献,可以線性地擴展以處理更大的數(shù)據(jù)集殉疼。
4. 簡單:Hadoop允許用戶快速編寫高效的并行代碼。
Hadoop的生態(tài)系統(tǒng)
- Nutch捌年,互聯(lián)網(wǎng)數(shù)據(jù)及Nutch搜索引擎應用
- HDFS,Hadoop的分布式文件系統(tǒng)
- MapReduce,分布式計算框架
- Flume瓢娜、Scribe,Chukwa數(shù)據(jù)收集礼预,收集非結(jié)構(gòu)化數(shù)據(jù)的工具眠砾。
- 7) Hiho、Sqoop,講關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)導入HDFS的工具
- 8) Hive數(shù)據(jù)倉庫托酸,pig分析數(shù)據(jù)的工具
- 10)Oozie作業(yè)流調(diào)度引擎
- 11)Hue褒颈,Hadoop自己的監(jiān)控管理工具
- 12)Avro 數(shù)據(jù)序列化工具
- 13)mahout數(shù)據(jù)挖掘工具
- 14)Hbase分布式的面向列的開源數(shù)據(jù)庫
Hadoop生態(tài)系統(tǒng)的特點
- 源代碼開源
- 社區(qū)活躍、參與者眾多
- 涉及分布式存儲和計算的方方面面
- 已得到企業(yè)界驗證
Hadoop生態(tài)系統(tǒng)的各組成部分詳解
上面的圖可能有些亂励堡,下面我們用一個簡易的Hadoop生態(tài)系統(tǒng)圖譜來描述Hadoop生態(tài)系統(tǒng)中出現(xiàn)的各種數(shù)據(jù)工具谷丸。
Hadoop1.0時代的生態(tài)系統(tǒng)如下:
Hadoop2.0時代的生態(tài)系統(tǒng)如下:
Hadoop的核心
由上圖可以看出Hadoop1.0與Hadoop2.0的區(qū)別。Hadoop1.0的核心由HDFS(Hadoop Distributed File System)和MapReduce(分布式計算框架)構(gòu)成应结。而在Hadoop2.0中增加了Yarn(Yet Another Resource Negotiator),來負責集群資源的統(tǒng)一管理和調(diào)度刨疼。
HDFS(分布式文件系統(tǒng))
HDFS源自于Google發(fā)表于2003年10月的GFS論文,也即是說HDFS是GFS的克隆版鹅龄。
此處只是HDFS的概述揩慕,如果想了解HDFS詳情,請查看HDFS詳解這篇文章。
HDFS具有如下特點:
- 良好的擴展性
- 高容錯性
- 適合PB級以上海量數(shù)據(jù)的存儲
HDFS的基本原理
- 將文件切分成等大的數(shù)據(jù)塊扮休,存儲到多臺機器上
- 將數(shù)據(jù)切分迎卤、容錯、負載均衡等功能透明化
- 可將HDFS看成容量巨大肛炮、具有高容錯性的磁盤
HDFS的應用場景
- 海量數(shù)據(jù)的可靠性存儲
- 數(shù)據(jù)歸檔
Yarn(資源管理系統(tǒng))
Yarn是Hadoop2.0新增的系統(tǒng)止吐,負責集群的資源管理和調(diào)度宝踪,使得多種計算框架可以運行在一個集群中。
此處只是Yarn的概述碍扔,如果想了解Yarn詳情,請查看Yarn詳解這篇文章瘩燥。
Yarn具有如下特點:
- 良好的擴展性、高可用性
- 對多種數(shù)據(jù)類型的應用程序進行統(tǒng)一管理和資源調(diào)度
- 自帶了多種用戶調(diào)度器不同,適合共享集群環(huán)境
MapReduce(分布式計算框架)
MapReduce源自于Google發(fā)表于2004年12月的MapReduce論文厉膀,也就是說,Hadoop MapReduce是Google MapReduce的克隆版二拐。
此處只是MapReduce的概述服鹅,如果想了解MapReduce詳情,請查看MapReduce詳解這篇文章。
MapReduce具有如下特點:
- 良好的擴展性
- 高容錯性
- 適合PB級以上海量數(shù)據(jù)的離線處理
Hive(基于MR的數(shù)據(jù)倉庫)
Hive由facebook開源百新,最初用于解決海量結(jié)構(gòu)化的日志數(shù)據(jù)統(tǒng)計問題企软;是一種ETL(Extraction-Transformation-Loading)工具。它也是構(gòu)建在Hadoop之上的數(shù)據(jù)倉庫饭望;數(shù)據(jù)計算使用MR,數(shù)據(jù)存儲使用HDFS仗哨。
Hive定義了一種類似SQL查詢語言的HiveQL查詢語言,除了不支持更新铅辞、索引和實物厌漂,幾乎SQL的其他特征都能支持。它通常用于離線數(shù)據(jù)處理(采用MapReduce);我們可以認為Hive的HiveQL語言是MapReduce語言的翻譯器斟珊,把MapReduce程序簡化為HiveQL語言苇倡。但有些復雜的MapReduce程序是無法用HiveQL來描述的。
Hive提供shell囤踩、JDBC/ODBC旨椒、Thrift、Web等接口堵漱。
此處只是Hive的概述钩乍,如果想了解Hive詳情,請查看Hive詳解這篇文章。
Hive應用場景
- 日志分析:統(tǒng)計一個網(wǎng)站一個時間段內(nèi)的pv怔锌、uv 寥粹;比如百度。淘寶等互聯(lián)網(wǎng)公司使用hive進行日志分析
- 多維度數(shù)據(jù)分析
- 海量結(jié)構(gòu)化數(shù)據(jù)離線分析
- 低成本進行數(shù)據(jù)分析(不直接編寫MR)
Pig(數(shù)據(jù)倉庫)
Pig由yahoo!開源埃元,設計動機是提供一種基于MapReduce的ad-hoc數(shù)據(jù)分析工具涝涤。它通常用于進行離線分析。
Pig是構(gòu)建在Hadoop之上的數(shù)據(jù)倉庫岛杀,定義了一種類似于SQL的數(shù)據(jù)流語言–Pig Latin,Pig Latin可以完成排序阔拳、過濾、求和、關(guān)聯(lián)等操作糊肠,可以支持自定義函數(shù)辨宠。Pig自動把Pig Latin映射為MapReduce作業(yè),上傳到集群運行货裹,減少用戶編寫Java程序的苦惱嗤形。
Pig有三種運行方式:Grunt shell阱高、腳本方式赴背、嵌入式。
此處只是Pig的概述桦他,如果想了解Pig詳情,請查看Pig詳解這篇文章搔预。
Pig與Hive的比較
Mahout(數(shù)據(jù)挖掘庫)
Mahout是基于Hadoop的機器學習和數(shù)據(jù)挖掘的分布式計算框架霹期。它實現(xiàn)了三大算法:推薦、聚類拯田、分類历造。
HBase(分布式數(shù)據(jù)庫)
HBase源自Google發(fā)表于2006年11月的Bigtable論文。也就是說船庇,HBase是Google Bigtable的克隆版帕膜。
HBase可以使用shell、web溢十、api等多種方式訪問。它是NoSQL的典型代表產(chǎn)品达吞。
此處只是HBase的概述张弛,如果想了解HBase詳情,請查看HBase詳解這篇文章。
HBase的特點
- 高可靠性
- 高性能
- 面向列
- 良好的擴展性
HBase的數(shù)據(jù)模型
下面簡要介紹一下:
- Table(表):類似于傳統(tǒng)數(shù)據(jù)庫中的表
- Column Family(列簇):Table在水平方向有一個或者多個Column Family組成酪劫;一個Column Family 中可以由任意多個Column組成吞鸭。
- Row Key(行健):Table的主鍵;Table中的記錄按照Row Key排序覆糟。
- Timestamp(時間戳):每一行數(shù)據(jù)均對應一個時間戳刻剥;也可以當做版本號。
Zookeeper(分布式協(xié)作服務)
Zookeeper源自Google發(fā)表于2006年11月的Chubby論文滩字,也就是說Zookeeper是Chubby的克隆版造虏。
Zookeeper解決分布式環(huán)境下數(shù)據(jù)管理問題:
- 統(tǒng)一命名
- 狀態(tài)同步
- 集群管理
- 配置同步
Zookeeper的應用
- HDFS
- Yarn
- Storm
- HBase
- Flume
- Dubbo
- Metaq
Sqoop(數(shù)據(jù)同步工具)
Sqoop是連接Hadoop與傳統(tǒng)數(shù)據(jù)庫之間的橋梁,它支持多種數(shù)據(jù)庫麦箍,包括MySQL漓藕、DB2等;插拔式挟裂,用戶可以根據(jù)需要支持新的數(shù)據(jù)庫享钞。
Sqoop實質(zhì)上是一個MapReduce程序,充分利用MR并行的特點,充分利用MR的容錯性诀蓉。
此處只是Sqoop的概述栗竖,如果想了解Sqoop詳情,請查看Sqoop詳解這篇文章暑脆。
Flume(日志收集工具)
Flume是Cloudera開源的日志收集系統(tǒng)。
Flume的特點
- 分布式
- 高可靠性
- 高容錯性
- 易于定制與擴展
Flume OG與Flume NG的對比
- Flume OG:Flume original generation 即Flume 0.9.x版本狐肢,它由agent添吗、collector、master等組件構(gòu)成处坪。
- Flume NG:Flume next generation 根资,即Flume 1.x版本,它由Agent同窘、Client等組件構(gòu)成玄帕。一個Agent包含Source、Channel想邦、Sink和其他組件裤纹。
Oozie(作業(yè)流調(diào)度系統(tǒng))
目前計算框架和作業(yè)類型種類繁多:如MapReduce、Stream丧没、HQL鹰椒、Pig等。這些作業(yè)之間存在依賴關(guān)系呕童,周期性作業(yè)漆际,定時執(zhí)行的作業(yè),作業(yè)執(zhí)行狀態(tài)監(jiān)控與報警等夺饲。如何對這些框架和作業(yè)進行統(tǒng)一管理和調(diào)度奸汇?
解決方案有多種:
- Linux Crontab
- 自己設計調(diào)度系統(tǒng)(淘寶等公司)
- 直接使用開源系統(tǒng)(Oozie)