Hadoop:你不得不瞭解的大數據工具

現在Apache Hadoop已成爲大數據行業發展背後的驅動力。Hive和Pig等技術也常常被提到,可是它們都有什麼功能,爲何會須要奇怪的名字(如Oozie,ZooKeeper、Flume)。程序員

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

Hadoop:你不得不瞭解的大數據工具

現今企業數據倉庫和關係型數據庫擅長處理結構化數據,而且能夠存儲大量的數據。但成本上有些昂貴。這種對數據的要求限制了可處理的數據種類,同時這 種慣性所帶的缺點還影響到數據倉庫在面對海量異構數據時對於敏捷的探索。這一般意味着有價值的數據源在組織內從未被挖掘。這就是Hadoop與傳統數據處 理方式最大的不一樣。數據庫

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

MapReduce——Hadoop的核心編程

Hadoop:你不得不瞭解的大數據工具

 

 

趣文推薦:《我是如何向老婆解釋MapReduce的?服務器

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

Hadoop:你不得不瞭解的大數據工具

對於開發人員,直接使用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:你不得不瞭解的大數據工具

隨着愈來愈多的項目加入Hadoop你們庭併成爲集羣系統運做的一部分,大數據處理系統須要負責協調工做的的成員。隨着計算節點的增多,集羣成員須要彼此同步並瞭解去哪裏訪問服務和如何配置,ZooKeeper正是爲此而生的。

而在Hadoop執行的任務有時候須要將多個Map/Reduce做業鏈接到一塊兒,它們之間或許批次依賴。Oozie組件提供管理工做流程和依賴的功能,並沒有需開發人員編寫定製的解決方案。

Ambari是最新加入Hadoop的項目,Ambari項目旨在將監控和管理等核心功能加入Hadoop項目。Ambari可幫助系統管理員部署和配置Hadoop,升級集羣以及監控服務。還可經過API集成與其餘的系統管理工具。

Apache Whirr是一套運行於雲服務的類庫(包括Hadoop),可提供高度的互補性。Whirr現今相對中立,當前支持Amazon EC2和Rackspace服務。

機器學習:Mahout

Hadoop:你不得不瞭解的大數據工具

各種組織需求的不一樣致使相關的數據形形色色,對這些數據的分析也須要多樣化的方法。Mahout提供一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地建立智能應用程序。Mahout包含許多實現,包括集羣、分類、推薦過濾、頻繁子項挖掘。

使用Hadoop

一般狀況下,Hadoop應用於分佈式環境。就像以前Linux的情況同樣,廠商集成和測試Apache Hadoop生態系統的組件,並添加本身的工具和管理功能。(李智/編譯)

原文連接:Forbes.com

相關文章
相關標籤/搜索