新手必備:大數據框架Hadoop主要模塊解析

hadoop Common: 包括Hadoop常用的工具類,由原來的Hadoop core部分更名而來。主要包括系統配置工具Configuration、遠程過程調用RPC、序列化機制和Hadoop抽象文件系統FileSystem等。它們爲在通用硬件上搭建雲計算環境提供基本的服務,併爲運行在該平臺上的軟件開發提供了所需的API。

Hadoop Distributed File System (HDFS™): 分佈式文件系統,提供對應用程序數據的高吞吐量,高伸縮性,高容錯性的訪問。是Hadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬件故障,用於在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型,通過流式數據訪問,提供高吞吐量應用程序數據訪問功能,適合帶有大型數據集的應用程序。

Hadoop YARN: 任務調度和集羣資源管理。

Hadoop MapReduce:
基於YARN的大型數據集並行處理系統。是一種計算模型,用以進行大數據量的計算。Hadoop的MapReduce實現,和Common、HDFS一起,構成了Hadoop發展初期的三個組件。MapReduce將應用劃分爲Map和Reduce兩個步驟,其中Map對數據集上的獨立元素進行指定的操作,生成鍵-值對形式中間結果。Reduce則對中間結果中相同“鍵”的所有“值”進行規約,以得到最終結果。MapReduce這樣的功能劃分,非常適合在大量計算機組成的分佈式並行環境裏進行數據處理。

其他模塊:

Ambari:
是一種基於Web的工具,支持Apache Hadoop集羣的供應、管理和監控。Ambari目前已支持大多數Hadoop組件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeper、Sqoop和Hcatalog等的集中管理。Ambari還提供了一個用於查看集羣健康狀況的儀表板,例如散熱圖,以及可視化查看MapReduce,Pig和Hive應用程序以及以用戶友好的方式診斷其性能特徵的功能。也是5個頂級hadoop管理工具之一。

Avro: 數據序列化系統,由Doug Cutting牽頭開發,是一個數據序列化系統。類似於其他序列化機制,Avro可以將數據結構或者對象轉換成便於存儲和傳輸的格式,其設計目標是用於支持數據密集型應用,適合大規模數據的存儲與交換。Avro提供了豐富的數據結構類型、快速可壓縮的二進制數據格式、存儲持久性數據的文件集、遠程調用RPC和簡單動態語言集成等功能。

Cassandra: 可擴展的多主數據庫,沒有單點故障。是一套開源分佈式NoSQL數據庫系統。它最初由Facebook開發,用於儲存收件箱等簡單格式數據,集GoogleBigTable的數據模型與Amazon Dynamo的完全分佈式的架構於一身Facebook於2008將 Cassandra 開源,此後,由於Cassandra良好的可擴展性,被Digg、Twitter等知名Web 2.0網站所採納,成爲了一種流行的分佈式結構化數據存儲方案。

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

Chukwa: 用於管理大型分佈式系統的數據收集系統(2000+以上的節點, 系統每天產生的監控數據量在T級別)。它構建在Hadoop的HDFS和MapReduce基礎之上,繼承了Hadoop的可伸縮性和魯棒性。Chukwa包含一個強大和靈活的工具集,提供了數據的生成、收集、排序、去重、分析和展示等一系列功能,是Hadoop使用者、集羣運營人員和管理人員的必備工具。

Hbase: 是一個分佈式的、面向列的開源數據庫,該技術來源於 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化數據的分佈式存儲系統”。就像Bigtable利用了Google文件系統(File System)所提供的分佈式數據存儲一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關係數據庫,它是一個適合於非結構化數據存儲的數據庫。另一個不同的是HBase基於列的而不是基於行的模式。

HBase是一個針對結構化數據的可伸縮、高可靠、高性能、分佈式和麪向列的動態模式數據庫。和傳統關係數據庫不同,HBase採用了BigTable的數據模型:增強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。HBase提供了對大規模數據的隨機、實時讀寫訪問,同時,HBase中保存的數據可以使用MapReduce來處理,它將數據存儲和並行計算完美地結合在一起。

Hive: 是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射爲一張數據庫表,並提供簡單的sql查詢功能,可以將sql語句轉換爲MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。

Hive是Hadoop中的一個重要子項目,最早由Facebook設計,是建立在Hadoop基礎上的數據倉庫架構,它爲數據倉庫的管理提供了許多功能,包括:數據ETL(抽取、轉換和加載)工具、數據存儲管理和大型數據集的查詢和分析能力。Hive提供的是一種結構化數據的機制,定義了類似於傳統關係數據庫中的類SQL語言:Hive QL,通過該查詢語言,數據分析人員可以很方便地運行數據分析業務。

Mahout: Apache旗下的一個開源項目,提供一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。Mahout包含許多實現,包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用 Apache Hadoop 庫,Mahout 可以有效地擴展到雲中。

Mahout起源於2008年,最初是Apache Lucent的子項目,它在極短的時間內取得了長足的發展,現在是Apache的頂級項目。Mahout的主要目標是創建一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。Mahout現在已經包含了聚類、分類、推薦引擎(協同過濾)和頻繁集挖掘等廣泛使用的數據挖掘方法。除了算法,Mahout還包含數據的輸入/輸出工具、與其他存儲系統(如數據庫、MongoDB 或Cassandra)集成等數據挖掘支持架構。

Pig: 運行在Hadoop上,是對大型數據集進行分析和評估的平臺。它簡化了使用Hadoop進行數據分析的要求,提供了一個高層次的、面向領域的抽象語言:Pig Latin。通過Pig Latin,數據工程師可以將複雜且相互關聯的數據分析任務編碼爲Pig操作上的數據流腳本,通過將該腳本轉換爲MapReduce任務鏈,在Hadoop上執行。和Hive一樣,Pig降低了對大型數據集進行分析和評估的門檻。

Apache Pig 是一個高級過程語言,適合於使用 Hadoop 和 MapReduce 平臺來查詢大型半結構化數據集。通過允許對分佈式數據集進行類似 SQL 的查詢,Pig 可以簡化 Hadoop 的使用。

用MapReduce進行數據分析。當業務比較複雜的時候,使用MapReduce將會是一個很複雜的事情,比如你需要對數據進行很多預處理或轉換,以便能夠適應MapReduce的處理模式。另一方面,編寫MapReduce程序,發佈及運行作業都將是一個比較耗時的事情。Pig的出現很好的彌補了這一不足。Pig能夠讓你專心於數據及業務本身,而不是糾結於數據的格式轉換以及MapReduce程序的編寫。本質是上來說,當你使用Pig進行處理時,Pig本身會在後臺生成一系列的MapReduce操作來執行任務,但是這個過程對用戶來說是透明的。

Spark: Hadoop數據快速通用的計算引擎。 Spark提供了一個簡單的編程模型,支持各種應用,包括ETL,機器學習,流處理和圖形計算。

Apache Spark 是專爲大規模數據處理而設計的快速通用的計算引擎。

Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用並行框架,Spark,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的MapReduce的算法。

Spark 是一種與 Hadoop 相似的開源集羣計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啓用了內存分佈數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載。

Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕鬆地操作分佈式數據集。

儘管創建 Spark 是爲了支持分佈式數據集上的迭代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統中並行運行。通過名爲 Mesos 的第三方集羣框架可以支持此行爲。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程序。

Tez: 用於構建高性能批處理和交互式數據處理應用程序的可擴展框架,由Apache Hadoop中的YARN協調。 Tez通過大幅度提高其速度來改進MapReduce範式,同時保持MapReduce擴展到PB級數據的能力。支持DAG(Database Availability Group 數據庫可用性組)作業的計算框架,它直接源於MapReduce框架,核心思想是將Map和Reduce兩個操作進一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,這樣,這些分解後的元操作可以任意靈活組合,產生新的操作,這些操作經過一些控制程序組裝後,可形成一個大的DAG作業。

ZooKeeper:
一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。

ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。

在分佈式系統中如何就某個值(決議)達成一致,是一個十分重要的基礎問題。ZooKeeper作爲一個分佈式的服務框架,解決了分佈式計算中的一致性問題。在此基礎上,ZooKeeper可用於處理分佈式應用中經常遇到的一些數據管理問題,如統一命名服務、狀態同步服務、集羣管理、分佈式應用配置項的管理等。ZooKeeper常作爲其他Hadoop相關項目的主要組件,發揮着越來越重要的作用。

結語

感謝您的觀看,如有不足之處,歡迎批評指正。
爲了幫助大家讓學習變得輕鬆、高效,給大家免費分享一大批資料,幫助大家在成爲大數據工程師,乃至架構師的路上披荊斬棘。在這裏給大家推薦一個大數據學習交流圈:658558542 歡迎大家進×××流討論,學習交流,共同進步。

當真正開始學習的時候難免不知道從哪入手,導致效率低下影響繼續學習的信心。

但最重要的是不知道哪些技術需要重點掌握,學習時頻繁踩坑,最終浪費大量時間,所以有有效資源還是很有必要的。

最後祝福所有遇到瓶疾且不知道怎麼辦的大數據程序員們,祝福大家在往後的工作與面試中一切順利。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章