HADOOP生態圈知識概述

. hadoop 生態概況

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。具備可靠、高效、可伸縮的特色。web

Hadoop的核心是YARN,HDFSMapreduce數據庫

下圖是hadoop生態系統,集成spark生態圈。在將來一段時間內,hadoop將於spark共存,hadoopspark都能部署在yarnmesos的資源管理系統之上。編程

wKioL1d144CD00gsAACIwEhkT8s912.jpg-wh_50

1HDFSHadoop分佈式文件系統)

源自於GoogleGFS論文,發表於200310月,HDFSGFS克隆版。架構

HDFSHadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬件故障,用於在低成本的通用硬件上運行。框架

HDFS簡化了文件的一致性模型,經過流式數據訪問,提供高吞吐量應用程序數據訪問功能,適合帶有大型數據集的應用程序。分佈式

它提供了一次寫入屢次讀取的機制,數據以塊的形式,同時分佈在集羣不一樣物理機器上。ide

 

2Mapreduce(分佈式計算框架)

源自於googleMapReduce論文,發表於200412月,HadoopMapReducegoogle MapReduce 克隆版。工具

MapReduce是一種分佈式計算模型,用以進行大數據量的計算。它屏蔽了分佈式計算框架細節,將計算抽象成mapreduce兩部分,oop

其中Map對數據集上的獨立元素進行指定的操做,生成鍵-值對形式中間結果。Reduce則對中間結果中相同「鍵」的全部「值」進行規約,以獲得最終結果。性能

MapReduce很是適合在大量計算機組成的分佈式並行環境裏進行數據處理。

 

3. HBASE(分佈式列存數據庫)

源自GoogleBigtable論文,發表於200611月,HBaseGoogleBigtable克隆版。

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

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

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

4. Zookeeper(分佈式協做服務)

源自GoogleChubby論文,發表於200611月,ZookeeperChubby克隆版

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

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

 

5. HIVE(數據倉庫)

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

 

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

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

6.Pig(ad-hoc腳本)

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

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

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

7.Sqoop(數據ETL/同步工具)

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

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

8.Flume(日誌收集工具)

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

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

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

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

9. Oozie(工做流調度器)

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

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

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

 

10. Yarn(分佈式資源管理器)

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

yarn是下一代 Hadoop 計算平臺,yarn是一個通用的運行時框架,用戶能夠編寫本身的計算框架,在該運行環境中運行。

用於本身編寫的框架做爲客戶端的一個lib,在運用提交做業時打包便可。該框架爲提供瞭如下幾個組件:

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

  • 資源雙層調度

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

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

  • 內存DAG計算模型)

Spark是一個Apache項目,它被標榜爲「快如閃電的集羣計算」。它擁有一個繁榮的開源社區,而且是目前最活躍的Apache項目。

最先SparkUC BerkeleyAMP lab所開源的類Hadoop MapReduce的通用的並行計算框架。

Spark提供了一個更快、更通用的數據處理平臺。和Hadoop相比,Spark可讓你的程序在內存中運行時速度提高100倍,或者在磁盤上運行時速度提高10

12. Kafka(分佈式消息隊列)

KafkaLinkedin201012月份開源的消息系統,它主要用於處理活躍的流式數據。

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

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

13.Ambari(安裝部署配置管理工具)

Apache Ambari 的做用來講,就是建立、管理、監視 Hadoop 的集羣,是爲了讓 Hadoop 以及相關的大數據軟件更容易使用的一個web工具。

相關文章
相關標籤/搜索