轉載自:https://www.cnblogs.com/hanzhi/articles/8969109.htmlhtml
1. hadoop 生態概況web
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。算法
用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。sql
具備可靠、高效、可伸縮的特色。數據庫
Hadoop的核心是YARN,HDFS和Mapreduceapache
下圖是hadoop生態系統,集成spark生態圈。在將來一段時間內,hadoop將於spark共存,hadoop與spark編程
都能部署在yarn、mesos的資源管理系統之上segmentfault
下面將分別對以上各組件進行簡要介紹,具體介紹參見後續系列博文。api
二、HDFS(Hadoop分佈式文件系統)
源自於Google的GFS論文,發表於2003年10月,HDFS是GFS克隆版。安全
HDFS是Hadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬件故障,用於在低成本的通用硬件上運行。
HDFS簡化了文件的一致性模型,經過流式數據訪問,提供高吞吐量應用程序數據訪問功能,適合帶有大型數據集的應用程序。
它提供了一次寫入屢次讀取的機制,數據以塊的形式,同時分佈在集羣不一樣物理機器上。
三、Mapreduce(分佈式計算框架)
源自於google的MapReduce論文,發表於2004年12月,Hadoop MapReduce是google MapReduce 克隆版。
MapReduce是一種分佈式計算模型,用以進行大數據量的計算。它屏蔽了分佈式計算框架細節,將計算抽象成map和reduce兩部分,
其中Map對數據集上的獨立元素進行指定的操做,生成鍵-值對形式中間結果。Reduce則對中間結果中相同「鍵」的全部「值」進行規約,以獲得最終結果。
MapReduce很是適合在大量計算機組成的分佈式並行環境裏進行數據處理。
4. HBASE(分佈式列存數據庫)
源自Google的Bigtable論文,發表於2006年11月,HBase是Google Bigtable克隆版
HBase是一個創建在HDFS之上,面向列的針對結構化數據的可伸縮、高可靠、高性能、分佈式和麪向列的動態模式數據庫。
HBase採用了BigTable的數據模型:加強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。
HBase提供了對大規模數據的隨機、實時讀寫訪問,同時,HBase中保存的數據可使用MapReduce來處理,它將數據存儲和並行計算完美地結合在一塊兒。
5. Zookeeper(分佈式協做服務)
源自Google的Chubby論文,發表於2006年11月,Zookeeper是Chubby克隆版
解決分佈式環境下的數據管理問題:統一命名,狀態同步,集羣管理,配置同步等。
Hadoop的許多組件依賴於Zookeeper,它運行在計算機集羣上面,用於管理Hadoop操做。
6. HIVE(數據倉庫)
由facebook開源,最初用於解決海量結構化的日誌數據統計問題。
Hive定義了一種相似SQL的查詢語言(HQL),將SQL轉化爲MapReduce任務在Hadoop上執行。一般用於離線分析。
HQL用於運行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發人員也能編寫數據查詢語句,而後這些語句被翻譯爲Hadoop上面的MapReduce任務。
7.Pig(ad-hoc腳本)
由yahoo!開源,設計動機是提供一種基於MapReduce的ad-hoc(計算在query時發生)數據分析工具
Pig定義了一種數據流語言—Pig Latin,它是MapReduce編程的複雜性的抽象,Pig平臺包括運行環境和用於分析Hadoop數據集的腳本語言(Pig Latin)。
其編譯器將Pig Latin翻譯成MapReduce程序序列將腳本轉換爲MapReduce任務在Hadoop上執行。一般用於進行離線分析。
8.Sqoop(數據ETL/同步工具)
Sqoop是SQL-to-Hadoop的縮寫,主要用於傳統數據庫和Hadoop以前傳輸數據。數據的導入和導出本質上是Mapreduce程序,充分利用了MR的並行化和容錯性。
Sqoop利用數據庫技術描述數據架構,用於在關係數據庫、數據倉庫和Hadoop之間轉移數據。
9.Flume(日誌收集工具)
Cloudera開源的日誌收集系統,具備分佈式、高可靠、高容錯、易於定製和擴展的特色。
它將數據從產生、傳輸、處理並最終寫入目標的路徑的過程抽象爲數據流,在具體的數據流中,數據源支持在Flume中定製數據發送方,從而支持收集各類不一樣協議數據。
同時,Flume數據流提供對日誌數據進行簡單處理的能力,如過濾、格式轉換等。此外,Flume還具備可以將日誌寫往各類數據目標(可定製)的能力。
總的來講,Flume是一個可擴展、適合複雜環境的海量日誌收集系統。固然也能夠用於收集其餘類型數據
10.Mahout(數據挖掘算法庫)
Mahout起源於2008年,最初是Apache Lucent的子項目,它在極短的時間內取得了長足的發展,如今是Apache的頂級項目。
Mahout的主要目標是建立一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地建立智能應用程序。
Mahout如今已經包含了聚類、分類、推薦引擎(協同過濾)和頻繁集挖掘等普遍使用的數據挖掘方法。
除了算法,Mahout還包含數據的輸入/輸出工具、與其餘存儲系統(如數據庫、MongoDB 或Cassandra)集成等數據挖掘支持架構。
11. Oozie(工做流調度器)
Oozie是一個可擴展的工做體系,集成於Hadoop的堆棧,用於協調多個MapReduce做業的執行。它可以管理一個複雜的系統,基於外部事件來執行,外部事件包括數據的定時和數據的出現。
Oozie工做流是放置在控制依賴DAG(有向無環圖 Direct Acyclic Graph)中的一組動做(例如,Hadoop的Map/Reduce做業、Pig做業等),其中指定了動做執行的順序。
Oozie使用hPDL(一種XML流程定義語言)來描述這個圖。
12. Yarn(分佈式資源管理器)
YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基礎上演變而來的,主要是爲了解決原始Hadoop擴展性較差,不支持多計算框架而提出的。
Yarn是下一代 Hadoop 計算平臺,yarn是一個通用的運行時框架,用戶能夠編寫本身的計算框架,在該運行環境中運行。
用於本身編寫的框架做爲客戶端的一個lib,在運用提交做業時打包便可。該框架爲提供瞭如下幾個組件:
- 資源管理:包括應用程序管理和機器資源管理
- 資源雙層調度
- 容錯性:各個組件均有考慮容錯性
- 擴展性:可擴展到上萬個節點
13. Mesos(分佈式資源管理器)
Mesos誕生於UC Berkeley的一個研究項目,現已成爲Apache項目,當前有一些公司使用Mesos管理集羣資源,好比Twitter。
與yarn相似,Mesos是一個資源統一管理和調度的平臺,一樣支持好比MR、steaming等多種運算框架。
14. Tachyon(分佈式內存文件系統)
Tachyon(/'tæki:ˌɒn/ 意爲超光速粒子)是之內存爲中心的分佈式文件系統,擁有高性能和容錯能力,
可以爲集羣框架(如Spark、MapReduce)提供可靠的內存級速度的文件共享服務。
Tachyon誕生於UC Berkeley的AMPLab。
15. 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程序,提高運算性能。
16. Spark(內存DAG計算模型)
Spark是一個Apache項目,它被標榜爲「快如閃電的集羣計算」。它擁有一個繁榮的開源社區,而且是目前最活躍的Apache項目。
最先Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的並行計算框架。
Spark提供了一個更快、更通用的數據處理平臺。和Hadoop相比,Spark可讓你的程序在內存中運行時速度提高100倍,或者在磁盤上運行時速度提高10倍
17. Giraph(圖計算模型)
Apache Giraph是一個可伸縮的分佈式迭代圖處理系統, 基於Hadoop平臺,靈感來自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。
最先出自雅虎。雅虎在開發Giraph時採用了Google工程師2010年發表的論文《Pregel:大規模圖表處理系統》中的原理。後來,雅虎將Giraph捐贈給Apache軟件基金會。
目前全部人均可如下載Giraph,它已經成爲Apache軟件基金會的開源項目,並獲得Facebook的支持,得到多方面的改進。
18. GraphX(圖計算模型)
Spark GraphX最早是伯克利AMPLAB的一個分佈式圖計算框架項目,目前整合在spark運行框架中,爲其提供BSP大規模並行圖計算能力。
19. MLib(機器學習庫)
Spark MLlib是一個機器學習庫,它提供了各類各樣的算法,這些算法用來在集羣上針對分類、迴歸、聚類、協同過濾等。
20. Streaming(流計算模型)
Spark Streaming支持對流數據的實時處理,以微批的方式對實時數據進行計算
21. Kafka(分佈式消息隊列)
Kafka是Linkedin於2010年12月份開源的消息系統,它主要用於處理活躍的流式數據。
活躍的流式數據在web網站應用中很是常見,這些數據包括網站的pv、用戶訪問了什麼內容,搜索了什麼內容等。
這些數據一般以日誌的形式記錄下來,而後每隔一段時間進行一次統計處理。
22. Phoenix(hbase sql接口)
Apache Phoenix 是HBase的SQL驅動,Phoenix 使得Hbase 支持經過JDBC的方式進行訪問,並將你的SQL查詢轉換成Hbase的掃描和相應的動做。
23. ranger(安全管理工具)
Apache ranger是一個hadoop集羣權限框架,提供操做、監控、管理複雜的數據權限,它提供一個集中的管理機制,管理基於yarn的hadoop生態圈的全部數據權限。
24. knox(hadoop安全網關)
Apache knox是一個訪問hadoop集羣的restapi網關,它爲全部rest訪問提供了一個簡單的訪問接口點,能完成3A認證(Authentication,Authorization,Auditing)和SSO(單點登陸)等
25. falcon(數據生命週期管理工具)
Apache Falcon 是一個面向Hadoop的、新的數據處理和管理平臺,設計用於數據移動、數據管道協調、生命週期管理和數據發現。它使終端用戶能夠快速地將他們的數據及其相關的處理和管理任務「上載(onboard)」到Hadoop集羣。
26.Ambari(安裝部署配置管理工具)
Apache Ambari 的做用來講,就是建立、管理、監視 Hadoop 的集羣,是爲了讓 Hadoop 以及相關的大數據軟件更容易使用的一個web工具。
參考文獻:
Hadoop生態系統介紹 http://blog.csdn.net/qa962839575/article/details/44256769?ref=myread
大數據和Hadoop生態圈,Hadoop發行版和基於Hadoop的企業級應用 http://www.36dsj.com/archives/26942
Oozie介紹 http://blog.csdn.net/wf1982/article/details/7200663
統一資源管理與調度平臺(系統)介紹 http://blog.csdn.net/meeasyhappy/article/details/8669688
Tachyon簡介http://blog.csdn.net/u014252240/article/details/41810849
Apache Tez:一個運行在YARN之上支持DAG做業的計算框架 http://segmentfault.com/a/1190000000458726
Giraph:基於Hadoop的開源圖形處理平臺 http://tech.it168.com/a2013/0821/1523/000001523700.shtml
Hadoop家族學習路線圖 http://blog.fens.me/hadoop-family-roadmap/
基於Spark的圖計算框架 GraphX 入門介紹 http://www.open-open.com/lib/view/open1420689305781.html
Apache Spark 入門簡介 http://blog.jobbole.com/89446/
Ambari——大數據平臺的搭建利器 http://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/index.html
消息系統Kafka介紹 http://dongxicheng.org/search-engine/kafka/
使用Apache Phoenix 實現 SQL 操做HBase http://www.tuicool.com/articles/vu6jae
面向Hadoop的、新的數據處理和管理平臺:Apache Falcon http://www.open-open.com/lib/view/open1422533435767.html