標籤:

Hadoop生態圈:19個讓大象飛起來的工具!

親愛的同學們!

大聖課堂又來了!

講了這麼久的大數據!

不知道有沒有細心的同學發現!

Hadoop這個詞語出現的頻率hin高hin高!

那麼今天俺老孫就來講講這個Hadoop有些什麼故事了!

同學們趕緊吃下這個乾貨吧!

管!飽!

Hadoop作為目前最為流行的大數據處理平台

是一個開源的可運行於大規模集群上的分散式並行編程框架

以下我們詳細來了解了解這個複雜的生態系統以及19個讓大象飛起來的工具!

Hadoop 生態概況

Hadoop是一個由Apache基金會所開發的分散式系統基礎架構。

用戶可以在不了解分散式底層細節的情況下,開發分散式程序。充分利用集群的威力進行高速運算和存儲。

具有可靠、高效、可伸縮的特點。

Hadoop的核心是YARN,HDFS和Mapreduce

在未來一段時間內,hadoop將於spark共存,hadoop與spark都能部署在yarn、mesos的資源管理系統之上

Hadoop生態系統,集成spark生態圈

下面將分別對以上各組件進行簡要介紹。

HDF | 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非常適合在大量計算機組成的分散式並行環境里進行數據處理。

Hbase | 分散式列存資料庫

源自Google的Bigtable論文,發表於2006年11月,HBase是Google Bigtable克隆版

HBase是一個建立在HDFS之上,面向列的針對結構化數據的可伸縮、高可靠、高性能、分散式和面向列的動態模式資料庫。

HBase採用了BigTable的數據模型:增強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。

HBase提供了對大規模數據的隨機、實時讀寫訪問,同時,HBase中保存的數據可以使用MapReduce來處理,它將數據存儲和並行計算完美地結合在一起。

Zookeeper | 分散式協作服務

源自Google的Chubby論文,發表於2006年11月,Zookeeper是Chubby克隆版

解決分散式環境下的數據管理問題:統一命名,狀態同步,集群管理,配置同步等。

Hadoop的許多組件依賴於Zookeeper,它運行在計算機集群上面,用於管理Hadoop操作。

HIVE | 數據倉庫

由facebook開源,最初用於解決海量結構化的日誌數據統計問題。

Hive定義了一種類似SQL的查詢語言(HQL),將SQL轉化為MapReduce任務在Hadoop上執行。通常用於離線分析。

HQL用於運行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發人員也能編寫數據查詢語句,然後這些語句被翻譯為Hadoop上面的MapReduce任務。

Pig | ad-hoc腳本

由yahoo!開源,設計動機是提供一種基於MapReduce的ad-hoc(計算在query時發生)數據分析工具

Pig定義了一種數據流語言—Pig Latin,它是MapReduce編程的複雜性的抽象,Pig平台包括運行環境和用於分析Hadoop數據集的腳本語言(Pig Latin)。

其編譯器將Pig Latin翻譯成MapReduce程序序列將腳本轉換為MapReduce任務在Hadoop上執行。通常用於進行離線分析。

Sqoop | 數據ETL/同步工具

Sqoop是SQL-to-Hadoop的縮寫,主要用於傳統資料庫和Hadoop之前傳輸數據。數據的導入和導出本質上是Mapreduce程序,充分利用了MR的並行化和容錯性。

Sqoop利用資料庫技術描述數據架構,用於在關係資料庫、數據倉庫和Hadoop之間轉移數據。

Flume | 日誌收集工具

Cloudera開源的日誌收集系統,具有分散式、高可靠、高容錯、易於定製和擴展的特點。

它將數據從產生、傳輸、處理並最終寫入目標的路徑的過程抽象為數據流,在具體的數據流中,數據源支持在Flume中定製數據發送方,從而支持收集各種不同協議數據。

同時,Flume數據流提供對日誌數據進行簡單處理的能力,如過濾、格式轉換等。此外,Flume還具有能夠將日誌寫往各種數據目標(可定製)的能力。

總的來說,Flume是一個可擴展、適合複雜環境的海量日誌收集系統。當然也可以用於收集其他類型數據。

Mahout | 數據挖掘演算法庫

Mahout起源於2008年,最初是Apache Lucent的子項目,它在極短的時間內取得了長足的發展,現在是Apache的頂級項目。

Mahout的主要目標是創建一些可擴展的機器學習領域經典演算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。

Mahout現在已經包含了聚類、分類、推薦引擎(協同過濾)和頻繁集挖掘等廣泛使用的數據挖掘方法。

除了演算法,Mahout還包含數據的輸入/輸出工具、與其他存儲系統(如資料庫、MongoDB 或Cassandra)集成等數據挖掘支持架構。

Oozie | 工作流調度器

Oozie是一個可擴展的工作體系,集成於Hadoop的堆棧,用於協調多個MapReduce作業的執行。它能夠管理一個複雜的系統,基於外部事件來執行,外部事件包括數據的定時和數據的出現。

Oozie工作流是放置在控制依賴DAG(有向無環圖 Direct Acyclic Graph)中的一組動作(例如,Hadoop的Map/Reduce作業、Pig作業等),其中指定了動作執行的順序。

Oozie使用hPDL(一種XML流程定義語言)來描述這個圖。

Yarn | 分散式資源管理器

YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基礎上演變而來的,主要是為了解決原始Hadoop擴展性較差,不支持多計算框架而提出的。

Yarn是下一代 Hadoop 計算平台,Yarn是一個通用的運行時框架,用戶可以編寫自己的計算框架,在該運行環境中運行。

用於自己編寫的框架作為客戶端的一個lib,在運用提交作業時打包即可。該框架為提供了以下幾個組件:

- 資源管理:包括應用程序管理和機器資源管理

- 資源雙層調度

- 容錯性:各個組件均有考慮容錯性

- 擴展性:可擴展到上萬個節點

Mesos | 分散式資源管理器

Mesos誕生於UC Berkeley的一個研究項目,現已成為Apache項目,當前有一些公司使用Mesos管理集群資源,比如Twitter。

與yarn類似,Mesos是一個資源統一管理和調度的平台,同樣支持比如MR、steaming等多種運算框架。

Tachyon | 分散式內存文件系統

Tachyon(/"t?ki:??n/ 意為超光速粒子)是以內存為中心的分散式文件系統,擁有高性能和容錯能力,

能夠為集群框架(如Spark、MapReduce)提供可靠的內存級速度的文件共享服務。

Tachyon誕生於UC Berkeley的AMPLab。

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倍。

Giraph | 圖計算模型

Apache Giraph是一個可伸縮的分散式迭代圖處理系統, 基於Hadoop平台,靈感來自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。

最早出自雅虎。雅虎在開發Giraph時採用了Google工程師2010年發表的論文《Pregel:大規模圖表處理系統》中的原理。後來,雅虎將Giraph捐贈給Apache軟體基金會。

目前所有人都可以下載Giraph,它已經成為Apache軟體基金會的開源項目,並得到Facebook的支持,獲得多方面的改進。

GraphX | 圖計算模型

Spark GraphX最先是伯克利AMPLAB的一個分散式圖計算框架項目,目前整合在spark運行框架中,為其提供BSP大規模並行圖計算能力。

MLib | 機器學習庫

Spark MLlib是一個機器學習庫,它提供了各種各樣的演算法,這些演算法用來在集群上針對分類、回歸、聚類、協同過濾等。

Streaming | 流計算模型

Spark Streaming支持對流數據的實時處理,以微批的方式對實時數據進行計算。

Kafka | 分散式消息隊列

Kafka是Linkedin於2010年12月份開源的消息系統,它主要用於處理活躍的流式數據。

活躍的流式數據在web網站應用中非常常見,這些數據包括網站的pv、用戶訪問了什麼內容,搜索了什麼內容等。

這些數據通常以日誌的形式記錄下來,然後每隔一段時間進行一次統計處理。

Phoenix | hbase sql介面

Apache Phoenix 是HBase的SQL驅動,Phoenix 使得Hbase 支持通過JDBC的方式進行訪問,並將你的SQL查詢轉換成Hbase的掃描和相應的動作。

Ranger | 安全管理工具

Apache ranger是一個hadoop集群許可權框架,提供操作、監控、管理複雜的數據許可權,它提供一個集中的管理機制,管理基於yarn的hadoop生態圈的所有數據許可權。

Knox | Hadoop安全網關

Apache knox是一個訪問hadoop集群的restapi網關,它為所有rest訪問提供了一個簡單的訪問介面點,能完成3A認證(Authentication,Authorization,Auditing)和SSO(單點登錄)等。

Falcon | 數據生命周期管理工具

Apache Falcon 是一個面向Hadoop的、新的數據處理和管理平台,設計用於數據移動、數據管道協調、生命周期管理和數據發現。它使終端用戶可以快速地將他們的數據及其相關的處理和管理任務「上載(onboard)」到Hadoop集群。

Ambari | 安裝部署配置管理工具

Apache Ambari 的作用來說,就是創建、管理、監視 Hadoop 的集群,是為了讓 Hadoop 以及相關的大數據軟體更容易使用的一個web工具。

Cloudera Impala | 查詢引擎

Impala是由Cloudera開發,一個開源的Massively Parallel Processing(MP)。與Hive相同的元數據、SQL語查詢引擎 法、ODBC驅動程序和用戶介面(Hue Beeswax),可以直接在HDFS或HBase上提供快速、互動式SQL查詢。Impala是在Dremel的啟發下開發的,第一個版本發佈於2012年末。

Impala不再使用緩慢的Hive+MapReduce批處理,而是通過與商用並行關係資料庫中類似的分散式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),可以直接從HDFS或者HBase中用SELECT、JOIN和統計函數查詢數據,從而大大降低了延遲。

Storm | 實時計算系統

Storm是一個分散式的、容錯的實時計算系統,由BackType開發,後被Twitter捕獲。Storm屬於流處理平台,多用於實時計算並更新資料庫。Storm也可被用於「連續計算」(continuous computation),對數據流做連續查詢,在計算時就將結果以流的形式輸出給用戶。它還可被用於「分散式RPC」,以並行的方式運行昂貴的運算。

Shark | 大規模數據倉庫系統

Shark,代表了「Hive on Spark」,一個專為Spark打造的大規模數據倉庫系統,兼容Apache Hive。無需修改現有的數據或者查詢,就可以用100倍的速度執行Hive QL。

Shark支持Hive查詢語言、元存儲、序列化格式及自定義函數,與現有Hive部署無縫集成,是一個更快、更強大的替代方案。

Pache Drill | 分散式mpp查詢層

本質上,Apache Drill是Google Dremel的開源實現,本質是一個分散式的mpp查詢層,支持SQL及一些用於NoSQL和Hadoop數據存儲系統上的語言,將有助於Hadoop用戶實現更快查詢海量數據集的目的。當下Drill還只能算上一個框架,只包含了Drill願景中的初始功能。

Drill的目的在於支持更廣泛的數據源、數據格式及查詢語言,可以通過對PB位元組數據的快速掃描(大約幾秒內)完成相關分析,將是一個專為互動分析大型數據集的分散式系統。

Apache Whirr | 類庫

Whirr 是一套運行於雲服務的類庫(包括Hadoop),可提供高度的互補性。Whirr學支持Amazon EC2和Rackspace的服務。

Cloudera Hue | 監控管理系統

Hue 是一個基於WEB的監控和管理系統,實現對HDFS,MapReduce/YARN, HBase, Hive, Pig的web化操作和管理。

Solr是基於Lucene的java搜索引擎伺服器,封裝及擴展性較好,提供了較為完備的解決方案,有高亮提示,solrcloud搭建高可用集群等等優點。

Cascading | Java 領域特定語言

在底層MapReduce API之上,最為流行的一種Java 領域特定語言就是Cascading。Cascading是在2007年底作為一種領域特定語言引入的,用於實現面向大規模數據工作流的函數式編程。它基於「管道(Plumbing)」這種隱喻將數據處理定義為構建於我們熟悉的一組元素之上的工作流,這些元素是: Pipe、Tap、元組行、Filter、Join、Trap等。

以上提到的許多工具

我們之前都有講過

需要複習的同學可以找到之前的文章

今天就講到這裡

俺老孫口渴死了要去喝水了!

拜拜~~~~


推薦閱讀:

數據研究番外篇:召喚師峽谷野生生態調查
《R語言實戰》圖形初階實踐筆記
2018 年基因檢測行業有哪些機會?

TAG:大数据 | Hadoop |