天天看點

Hadoop簡介

Hadoop簡介

如今Apache Hadoop已成為大資料行業發展背後的驅動力。Hive和Pig等技術也經常被提到,但是他們都有什麼功能,為什麼會需要奇怪的名字(如Oozie,ZooKeeper、Flume)。

Hadoop帶來了廉價的處理大資料(大資料的資料容量通常是10-100GB或更多,同時資料種類多種多樣,包括結構化、非結構化等)的能力。但這與之前有什麼不同?

現今企業資料倉庫和關系型資料庫擅長處理結構化資料,并且可以存儲大量的資料。但成本上有些昂貴。這種對資料的要求限制了可處理的資料種類,同時這種慣性所帶的缺點還影響到資料倉庫在面對海量異構資料時對于靈活的探索。這通常意味着有價值的資料源在組織内從未被挖掘。這就是Hadoop與傳統資料處理方式最大的不同。

本文就重點探讨了Hadoop系統的組成部分,并解釋各個組成部分的功能。

MapReduce——Hadoop的核心

Hadoop簡介

Google的網絡搜尋引擎在得益于算法發揮作用的同時,MapReduce在背景發揮了極大的作用。MapReduce架構成為當今大資料處理背後的最具影響力的“發動機”。除了Hadoop,你還會在MapReduce上發現MPP(Sybase IQ推出了列示資料庫)和NoSQL(如Vertica和MongoDB)。

MapReduce的重要創新是當處理一個大資料集查詢時會将其任務分解并在運作的多個節點中處理。當資料量很大時就無法在一台伺服器上解決問題,此時分布式計算優勢就展現出來。将這種技術與Linux伺服器結合可獲得成本效益極高的替代大規模計算陣列的方法。Yahoo在2006年看到了Hadoop未來的潛力,并邀請Hadoop創始人Doug Cutting着手發展Hadoop技術,在2008年Hadoop已經形成一定的規模。Hadoop項目再從初期發展的成熟的過程中同時吸納了一些其他的元件,以便進一步提高自身的易用性和功能。

HDFS和MapReduce

Hadoop簡介

以上我們讨論了MapReduce将任務分發到多個伺服器上處理大資料的能力。而對于分布式計算,每個伺服器必須具備對資料的通路能力,這就是HDFS(Hadoop Distributed File System)所起到的作用。

HDFS與MapReduce的結合是強大的。在處理大資料的過程中,當Hadoop叢集中的伺服器出現錯誤時,整個計算過程并不會終止。同時HFDS可保障在整個叢集中發生故障錯誤時的資料備援。當計算完成時将結果寫入HFDS的一個節點之中。HDFS對存儲的資料格式并無苛刻的要求,資料可以是非結構化或其它類别。相反關系資料庫在存儲資料之前需要将資料結構化并定義架構。

開發人員編寫代碼責任是使資料有意義。Hadoop MapReduce級的程式設計利用Java APIs,并可手動加載資料檔案到HDFS之中。

Pig和Hive

對于開發人員,直接使用Java APIs可能是乏味或容易出錯的,同時也限制了Java程式員在Hadoop上程式設計的運用靈活性。于是Hadoop提供了兩個解決方案,使得Hadoop程式設計變得更加容易。

•Pig是一種程式設計語言,它簡化了Hadoop常見的工作任務。Pig可加載資料、表達轉換資料以及存儲最終結果。Pig内置的操作使得半結構化資料變得有意義(如日志檔案)。同時Pig可擴充使用Java中添加的自定義資料類型并支援資料轉換。

•Hive在Hadoop中扮演資料倉庫的角色。Hive添加資料的結構在HDFS(hive superimposes structure on data in HDFS),并允許使用類似于SQL文法進行資料查詢。與Pig一樣,Hive的核心功能是可擴充的。

Pig和Hive總是令人困惑的。Hive更适合于資料倉庫的任務,Hive主要用于靜态的結構以及需要經常分析的工作。Hive與SQL相似促使其成為Hadoop與其他BI工具結合的理想交集。Pig賦予開發人員在大資料集領域更多的靈活性,并允許開發簡潔的腳本用于轉換資料流以便嵌入到較大的應用程式。Pig相比Hive相對輕量,它主要的優勢是相比于直接使用Hadoop Java APIs可大幅削減代碼量。正因為如此,Pig仍然是吸引大量的軟體開發人員。

改善資料通路:HBase、Sqoop以及Flume

Hadoop簡介

Hadoop核心還是一套批處理系統,資料加載進HDFS、處理然後檢索。對于計算這或多或少有些倒退,但通常互動和随機存取資料是有必要的。HBase作為面向列的資料庫運作在HDFS之上。HBase以Google BigTable為藍本。項目的目标就是快速在主機内數十億行資料中定位所需的資料并通路它。HBase利用MapReduce來處理内部的海量資料。同時Hive和Pig都可以與HBase組合使用,Hive和Pig還為HBase提供了高層語言支援,使得在HBase上進行資料統計處理變的非常簡單。

但為了授權随機存儲資料,HBase也做出了一些限制:例如Hive與HBase的性能比原生在HDFS之上的Hive要慢4-5倍。同時HBase大約可存儲PB級的資料,與之相比HDFS的容量限制達到30PB。HBase不适合用于ad-hoc分析,HBase更适合整合大資料作為大型應用的一部分,包括日志、計算以及時間序列資料。

擷取資料與輸出資料

Sqoop和Flume可改進資料的互操作性和其餘部分。Sqoop功能主要是從關系資料庫導入資料到Hadoop,并可直接導入到HFDS或Hive。而Flume設計旨在直接将流資料或日志資料導入HDFS。

Hive具備的友好SQL查詢是與繁多資料庫的理想結合點,資料庫工具通過JDBC或ODBC資料庫驅動程式連接配接。

負責協調工作流程的ZooKeeper和Oozie

Hadoop簡介

歲月裡,寒暑交替。人世間,北來南往。銘心的,雲煙的。都付往事,不念,不問。

繼續閱讀