大資料生態圈技術框架總攬

金羅老師發表於2019-01-07

1. hadoop 大資料基礎框架

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

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

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

Hadoop的核心是YARN,HDFS和Mapreduce

下圖是hadoop生態系統,整合spark生態圈。在未來一段時間內,hadoop將於spark共存,hadoop與spark

都能部署在yarn、mesos的資源管理系統之上。

自己建的大資料學習交流群:199427210,群裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料軟體開發相關的),包括我自己整理的一份最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴加入。

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

Yarn(分散式資源管理器)

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

Yarn是下一代 Hadoop 計算平臺,yarn是一個通用的執行時框架,使用者可以編寫自己的計算框架,在該執行環境中執行。

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

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

- 資源雙層排程

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

- 擴充套件性:可擴充套件到上萬個節點

2. HBASE(分散式列存資料庫)

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

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

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

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

3. Zookeeper(分散式協作服務)

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

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

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

4. HIVE(資料倉儲)

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

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

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

5. Spark(記憶體DAG計算模型)

Spark是一個Apache專案,它被標榜為“快如閃電的叢集計算”。它擁有一個繁榮的開源社群,並且是目前最活躍的Apache專案。

最早Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的平行計算框架。

Spark提供了一個更快、更通用的資料處理平臺。和Hadoop相比,Spark可以讓你的程式在記憶體中執行時速度提升100倍,或者在磁碟上執行時速度提升10倍

6. Kafka(分散式訊息佇列)

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

活躍的流式資料在web網站應用中非常常見,這些資料包括網站的pv、使用者訪問了什麼內容,搜尋了什麼內容等。

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

9.Flume(日誌收集工具)

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

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

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

總的來說,Flume是一個可擴充套件、適合複雜環境的海量日誌收集系統。當然也可以用於收集其他型別資料.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561003/viewspace-2374951/,如需轉載,請註明出處,否則將追究法律責任。

相關文章