1. 程式人生 > >Hadoop平臺的基本組成與生態系統

Hadoop平臺的基本組成與生態系統

分析 狀態 腳本 UC 持久化 其他 可用 使用 定義數據

Hadoop系統運行於一個由普通商用服務器組成的計算集群上,該服務器集群在提供大規模分布式數據存儲資源的同時,也提供大規模的並行化計算資源。
  在大數據處理軟件系統上,隨著Apache Hadoop系統開源化的發展,在最初包含HDFS、MapReduce、HBase等基本子系統的基礎上,至今Hadoop平臺已經演進為一個包含很多相關子系統的完整的大數據處理生態系統。圖1-15展示了Hadoop平臺的基本組成與生態系統。

技術分享圖片


  

1.MapReduce並行計算框架
  MapReduce並行計算框架是一個並行化程序執行系統。它提供了一個包含Map和Reduce兩階段的並行處理模型和過程,提供一個並行化編程模型和接口,讓程序員可以方便快速地編寫出大數據並行處理程序。MapReduce以鍵值對數據輸入方式來處理數據,並能自動完成數據的劃分和調度管理。在程序執行時,MapReduce並行計算框架將負責調度和分配計算資源,劃分和輸入輸出數據,調度程序的執行,監控程序的執行狀態,並負責程序執行時各計算節點的同步以及中間結果的收集整理。MapReduce框架提供了一組完整的供程序員開發MapReduce應用程序的編程接口。

  2.分布式文件系統HDFS
  HDFS(Hadoop Distributed File System)是一個類似於Google GFS的開源的分布式文件系統。它提供了一個可擴展、高可靠、高可用的大規模數據分布式存儲管理系統,基於物理上分布在各個數據存儲節點的本地Linux 系統的文件系統,為上層應用程序提供了一個邏輯上成為整體的大規模數據存儲文件系統。與GFS類似,HDFS采用多副本(默認為3個副本)數據冗余存儲機制,並提供了有效的數據出錯檢測和數據恢復機制,大大提高了數據存儲的可靠性。

  3.分布式數據庫管理系統HBase
  為了克服HDFS難以管理結構化/半結構化海量數據的缺點,Hadoop提供了一個大規模分布式數據庫管理和查詢系統HBase。HBase是一個建立在HDFS之上的分布式數據庫,它是一個分布式可擴展的NoSQL數據庫,提供了對結構化、半結構化甚至非結構化大數據的實時讀寫和隨機訪問能力。 HBase提供了一個基於行、列和時間戳的三維數據管理模型,HBase中每張表的記錄數(行數)可以多達幾十億條甚至更多,每條記錄可以擁有多達上百萬的字段。

  4.公共服務模塊Common
  Common是一套為整個Hadoop系統提供底層支撐服務和常用工具的類庫和API編程接口,這些底層服務包括Hadoop抽象文件系統 FileSystem、遠程過程調用RPC、系統配置工具Configuration以及序列化機制。在0.20及以前的版本中,Common包含 HDFS、MapReduce和其他公共的項目內容;從0.21版本開始,HDFS和MapReduce被分離為獨立的子項目,其余部分內容構成 Hadoop Common。

  5.數據序列化系統Avro
  Avro是一個數據序列化系統,用於將數據結構或數據對象轉換成便於數據存儲和網絡傳輸的格式。Avro提供了豐富的數據結構類型,快速可壓縮的二進制數據格式,存儲持久性數據的文件集,遠程調用RPC和簡單動態語言集成等功能。

  6.分布式協調服務框架Zookeeper
  Zookeeper是一個分布式協調服務框架,主要用於解決分布式環境中的一致性問題。Zookeeper主要用於提供分布式應用中經常需要的系統可靠性維護、數據狀態同步、統一命名服務、分布式應用配置項管理等功能。Zookeeper可用來在分布式環境下維護系統運行管理中的一些數據量不大的重要狀態數據,並提供監測數據狀態變化的機制,以此配合其他Hadoop子系統(如HBase、Hama等)或者用戶開發的應用系統,解決分布式環境下系統可靠性管理和數據狀態維護等問題。

  7.分布式數據倉庫處理工具Hive
  Hive是一個建立在Hadoop之上的數據倉庫,用於管理存儲於HDFS或HBase中的結構化/半結構化數據。它最早由Facebook開發並用於處理並分析大量的用戶及日誌數據,2008年Facebook將其貢獻給Apache成為Hadoop開源項目。為了便於熟悉SQL的傳統數據庫使用者使用Hadoop系統進行數據查詢分析,Hive允許直接用類似SQL的HiveQL查詢語言作為編程接口編寫數據查詢分析程序,並提供數據倉庫所需要的數據抽取轉換、存儲管理和查詢分析功能,而HiveQL語句在底層實現時被轉換為相應的MapReduce程序加以執行。

  8.數據流處理工具Pig
  Pig是一個用來處理大規模數據集的平臺,由Yahoo!貢獻給Apache成為開源項目。它簡化了使用Hadoop進行數據分析處理的難度,提供一個面向領域的高層抽象語言Pig Latin,通過該語言,程序員可以將復雜的數據分析任務實現為Pig操作上的數據流腳本,這些腳本最終執行時將被系統自動轉換為MapReduce任務鏈,在Hadoop上加以執行。Yahoo!有大量的MapReduce作業是通過Pig實現的。

  9.鍵值對數據庫系統Cassandra
  Cassandra是一套分布式的K-V型的數據庫系統,最初由Facebook開發,用於存儲郵箱等比較簡單的格式化數據,後Facebook將 Cassandra貢獻出來成為Hadoop開源項目。Cassandra以Amazon專有的完全分布式Dynamo為基礎,結合了Google BigTable基於列族(Column Family)的數據模型,提供了一套高度可擴展、最終一致、分布式的結構化鍵值存儲系統。它結合了Dynamo的分布技術和Google的 Bigtable數據模型,更好地滿足了海量數據存儲的需求。同時,Cassandra變更垂直擴展為水平擴展,相比其他典型的鍵值數據存儲模型,Cassandra提供了更為豐富的功能。

  10.日誌數據處理系統Chukwa
  Chukwa是一個由Yahoo!貢獻的開源的數據收集系統,主要用於日誌的收集和數據的監控,並與MapReduce協同處理數據。Chukwa 是一個基於Hadoop的大規模集群監控系統,繼承了Hadoop系統的可靠性,具有良好的適應性和擴展性。它使用HDFS來存儲數據,使用 MapReduce來處理數據,同時還提供靈活強大的輔助工具用以分析、顯示、監視數據結果。

  11.科學計算基礎工具庫Hama
  Hama是一個基於BSP並行計算模型(Bulk Synchronous Parallel,大同步並行模型)的計算框架,主要提供一套支撐框架和工具,支持大規模科學計算或者具有復雜數據關聯性的圖計算。Hama類似 Google公司開發的Pregel,Google利用Pregel來實現圖遍歷(BFS)、最短路徑(SSSP)、PageRank等計算。Hama可以與Hadoop的HDSF進行完美的整合,利用HDFS對需要運行的任務和數據進行持久化存儲。由於BSP在並行化計算模型上的靈活性,Hama框架可在大規模科學計算和圖計算方面得到較多應用,完成矩陣計算、排序計算、PageRank、BFS等不同的大數據計算和處理任務。

  12.數據分析挖掘工具庫Mahout
  Mahout來源於Apache Lucene子項目,其主要目標是創建並提供經典的機器學習和數據挖掘並行化算法類庫,以便減輕需要使用這些算法進行數據分析挖掘的程序員的編程負擔,不需要自己再去實現這些算法。Mahout現在已經包含了聚類、分類、推薦引擎、頻繁項集挖掘等廣泛使用的機器學習和數據挖掘算法。此外,它還提供了包含數據輸入輸出工具,以及與其他數據存儲管理系統進行數據集成的工具和構架。

  13.關系數據交換工具Sqoop
  Sqoop是SQL-to-Hadoop的縮寫,是一個在關系數據庫與Hadoop平臺間進行快速批量數據交換的工具。它可以將一個關系數據庫中的數據批量導入Hadoop的HDFS、HBase、Hive中,也可以反過來將Hadoop平臺中的數據導入關系數據庫中。Sqoop充分利用了 Hadoop MapReduce的並行化優點,整個數據交換過程基於MapReduce實現並行化的快速處理。

  14.日誌數據收集工具Flume
  Flume是由Cloudera開發維護的一個分布式、高可靠、高可用、適合復雜環境下大規模日誌數據采集的系統。它將數據從產生、傳輸、處理、輸出的過程抽象為數據流,並允許在數據源中定義數據發送方,從而支持收集基於各種不同傳輸協議的數據,並提供對日誌數據進行簡單的數據過濾、格式轉換等處理能力。輸出時,Flume可支持將日誌數據寫往用戶定制的輸出目標。

長按識別關註我們,每天都有技術和精彩內容分享哦!~

技術分享圖片

Hadoop平臺的基本組成與生態系統