Hadoop主要子項目介紹(Pig Zookeeper Hbase Hive Sqoop Avro Chukwa Cassandra )

jopen 8年前發布 | 19K 次閱讀 分布式/云計算/大數據

現在Hadoop已經發展成為包含多個子項目的集合。雖然其核心內容是MapReduce和Hadoop分布式文件系統(HDFS),但Hadoop下的Common、Avro、Chukwa、Hive、HBase等子項目也是不可或缺的。它們提供了互補性服務或在核心層上提供了更高層的服務。

1、Hadoop Common
從Hadoop 0.20版本開始,Hadoop Core項目便更名為Common。Common是為Hadoop其他子項目提供支持的常用工具,它主要包括FileSystem、RPC和串行化庫,它們為在廉價的硬件上搭建云計算環境提供基本的服務,并且為運行在該運平臺上的軟件開發提供了所需的API。

Hadoop體系最底層的一個模塊,為Hadoop各子項目提供各種工具,如:配置文件和日志操作等。


2、Pig

1)、Pig是一種探索大規模數據集的腳本語言。
2)、pig是在HDFS和MapReduce之上的數據流處理語言,它將數據流處理翻譯成多個map和reduce函數,提供更高層次的抽象將程序員從具體的編程中解放出來。
3)、Pig包括兩部分:用于描述數據流的語言,稱為Pig Latin;和用于運行Pig Latin程序的執行環境。
4)、Pig Latin程序有一系列的operation和transformation組成。每個操作或變換對輸入進行數據處理,然后產生輸出結果。這些操作整體上描述了一個數據流。Pig內部,這些變換操作被轉換成一系列的MapReduce作業。
5)、Pig不適合所有的數據處理任務,和MapReduce一樣,它是為數據批處理而設計的。如果只想查詢大數據集中的一小部分數據,pig的實現不會很好,因為它要掃描整個數據集或絕大部分。


3、Hbase

HBase是Hadoop的一個子項目,HBase采用了Google BigTable的稀疏的,面向列的數據庫實現方式的理論,建立在hadoop的hdfs上,一方面里用了hdfs的高可靠性和可伸縮行,另外一方面里用了BigTable的高效數據組織形式.可以說HBase為海量數據的real-time相應提供了很好的一個開源解決方案.據說在某運營商中使用類似于BigTable的技術可以在兩秒時間內從2TB數據中查找到某條話費

1)、首先HBase不同于一般的關系數據庫,它是一個適合于非結構化數據存儲的數據庫.另一個不同的是HBase基于列的而不是基于行的模式.

2)、Bigtable是一個疏松的分布式的持久的多維排序的map,這個map被行鍵,列鍵,和時間戳索引.每一個值都是連續的byte數組

3)、HBase使用和Bigtable非常相同的數據模型.用戶存儲數據行在一個表里.一個數據行擁有一個可選擇的鍵和任意數量的列.表是疏松的存儲的,因此用戶可以給行定義各種不同的列.


4、Hive

Hive 是一種建立在 Hadoop 之上的數據倉庫架構。它提供了:

? 一套方便的實施數據抽取(ETL)的工具。

? 一種讓用戶對數據描述其結構的機制。

? 支持用戶對存儲在Hadoop中的海量數據進行查詢和分析的能力。

Hive 的基本特點是它采用 HDFS 進行數據存儲并利用 Map/Reduce 框架進行數據操作。所以從本質上來說,Hive 就是個編譯器,它把用戶的操作(查詢或者 ETL)變換成Map/Reduce 任務,利用 Map/Reduce 框架執行這些任務以對HDFS上的海量數據進行處理。

Hive 被設計成一種批處理系統。它利用 Map/Reduce 框架來處理數據。因此,它在Map/Reduce 任務提交和調度上有比較高的開銷。即使對于小數據集(幾百兆)來說,延遲也是分鐘級的。但其最大的優點是延遲相對于數據集大小是線性增加的。

Hive 定義了一種簡單的類 SQL 查詢語言 HiveQL,讓熟悉 SQL 的用戶可以非常容易的進行查詢。與此同時,HiveQL 也允許熟悉 Map/Reduce 框架的程序員在查詢中插入自定義的 mapper 和 reducer 腳本以擴展 Hive 內嵌的功能,完成更復雜的分析。


5、HDFS

HDFS為分布式計算存儲提供底層支持。

HDFS的設計思想:構建一個非常龐大的分布式文件系統。在集群中節點失效是正常的,節點的數量在Hadoop中不是固定的。單一的文件命名空間,保證數據的一致性,寫入一次多次讀取。典型的64MB數據塊大小,每個數據塊在多個DN(DataNode)有復制客戶端通過NN(NameNode)得到數據塊的位置,直接訪問DN獲取數據。

NameNode:

1)NameNode是一個通常在HDFS實例中單獨機器上運行的軟件。它負責管理文件系統名稱空間和控制外部客戶機的訪問。它決定是否將會文件映射到DateNode上的復制塊上。對于NameNode并不進行具體的IO操作,當外部客戶機發生請求要求創建文件時NameNode 會議標識塊和該塊的第一個副本的DateNode IP地址作為響應。
2)NameNode在一個成為sImage的文件中存儲所有有關于文件系統名稱空間的信息,這個文件包含所有事物的記錄文件(EditLog)將存儲在NameNode的本地文件系統上。其中FsImage和EditLog文件也需要復制副本,以防止文件損毀或者NameNode系統丟失
DataNode:
1)DateNode通常是在一個HDFS實例中單獨機器上運行的軟件,DataNode通常以機架的形式組織,機架通過一個交換機將所有的系統鏈接起來。
2)DateNode 響應來自HDFS客戶機的讀寫請求。他們還想應創建、刪除和復制及來自NameNode塊的命令
3)NameNode依賴來自于每個DataNode的定期心跳消息。每條消息都包含了一個塊報告,NameNode可以根據這個報告驗證映射和其他文件系統的元數據。如果DateNode不發送心跳消息,NameNode 將會采取修復措施。


6、MapReduce

1)MapReduce 是一個高性能的批處理分布式計算框架,用于對海量數據進行并行分析和處理。與傳統數據倉庫和分析技術相比,MapReduce 適合處理各種類型的數據,包括結構化、半結構化和非結構化數據。數據量在 TB 和 PB 級別,在這個量級上,傳統方法通常已經無法處理數據。

2)MapReduce 將分析任務分為大量的并行 Map 任務和 Reduce 匯總任務兩類。Map 任務運行在多個服務器上。目前部署的最大集群有 4000 個服務器。

3)最基本的MapReduce包括了Map、Reduce、mian函數,Google發現大多數分布式運算可以抽象為MapReduce操作。Map是把輸入Input分解成中間的Key/Value對,Reduce把Key/Value合成最終輸出Output。這兩個函數由程序員提供給系統,下層設施把Map和Reduce操作分布在集群上運行,并把結果存儲在GFS上。


7、Zookeeper

ZooKeeper是一個針對大型分布式系統的可靠協調服務,Google Chubby的開源實現。

1、用于協調分布式系統上的各種服務。例如確認消息是否準確到達,防止單點失效,處理負載均衡等 
2、應用場景:Hbase,實現Namenode自動切換 
3、工作原理:領導者,跟隨者以及選舉過程


8、Sqoop 

1、用于在Hadoop和關系型數據庫之間交換數據 
2、 通過JDBC接口連入關系型數據庫 


9、Avro

一種提供高效、跨語言RPC的數據序列系統,持久化數據存儲。

1、數據序列化工具,由Hadoop的創始人Doug Cutting主持開發 
2、 用于支持大批量數據交換的應用。支持二進制序列化方式,可以便捷,快速地處理大量數據 
3、 動態語言友好,Avro提供的機制使動態語言可以方便地處理 Avro數據。


10、Chukwa 

分布式數據收集和分析系統。Chukwa運行HDFS中存儲數據的收集器,它用MapReduce來生成報告。

chukwa 是一個開源的用于監控大型分布式系統的數據收集系統。這是構建在 hadoop 的 hdfs 和 map/reduce 框架之上的,繼承了 hadoop 的可伸縮性和魯棒性。Chukwa 還包含了一個強大和靈活的工具集,可用于展示、監控和分析已收集的數據。

具體而言, chukwa 致力于以下幾個方面的工作:
1. 總體而言, chukwa 可以用于監控大規模(2000+ 以上的節點, 每天產生數據量在T級別) hadoop 集群的整體運行情況并對它們的日志進行分析
2. 對于集群的用戶而言: chukwa 展示他們的作業已經運行了多久,占用了多少資源,還有多少資源可用,一個作業是為什么失敗了,一個讀寫操作在哪個節點出了問題.
3. 對于集群的運維工程師而言: chukwa 展示了集群中的硬件錯誤,集群的性能變化,集群的資源瓶頸在哪里.
4. 對于集群的管理者而言: chukwa 展示了集群的資源消耗情況,集群的整體作業執行情況,可以用以輔助預算和集群資源協調.
5. 對于集群的開發者而言: chukwa 展示了集群中主要的性能瓶頸,經常出現的錯誤,從而可以著力重點解決重要問題.

11、Cassandra 

Apache Cassandra是一套開源分布式Key-Value存儲系統。它最初由非死book開發,用于儲存特別大的數據。非死book目前在使用此系統。

Cassandra的主要特點就是它不是一個數據庫,而是由一堆數據庫節點共同構成的一個分布式網絡服務,對Cassandra 的一個寫操作,會被復制到其他節點上去,對Cassandra的讀操作,也會被路由到某個節點上面去讀取。對于一個Cassandra群集來說,擴展性能 是比較簡單的事情,只管在群集里面添加節點就可以了。

Cassandra是一個混合型的非關系的數據庫,類似于Google的BigTable。其主要功能比 Dynomite(分布式的Key-Value存 儲系統)更豐富,但支持度卻不如文檔存儲MongoDB(介于關系數據庫和非關系數據庫之間的開源產品,是非關系數據庫當中功能最豐富,最像關系數據庫 的。支持的數據結構非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數據類型。)Cassandra最初由非死book開發,后轉變成了開源項目。它是一個網絡社交云計算方面理想的數據庫。以Amazon專有的完全分布式的Dynamo為基礎,結合了Google BigTable基于列族(Column Family)的數據模型。P2P去中心化的存儲。很多方面都可以稱之為Dynamo 2.0。


PS

Hbase和Hive在Hadoop中的功能有什么聯系?

1、 hbase與hive都是架構在hadoop之上的。都是用hadoop作為底層存儲。而hbase是作為分布式數據庫,而hive是作為分布式數據倉庫。當然hive還是借用hadoop的MapReduce來完成一些hive中的命令的執行。而hbase與hive都是單獨安裝的。

2、hdfs作為底層存儲,hdfs是存放文件的系統,而Hbase負責組織文件。hive需要用到hdfs存儲文件,需要用到MapReduce計算框架。 


來自: http://blog.csdn.net//u011067360/article/details/24435255

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!