大資料時代你不得不了解的大資料處理工具

來源:互聯網
上載者:User
關鍵字 dfs 大資料 同時 開發人員

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

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

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

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

MapReduce----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

以上我們討論了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核心還是一套批次處理系統,資料載入進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大家庭並成為集群系統運作的一部分,大資料處理系統需要負責協調工作的的成員。 隨著計算節點的增多,集群成員需要彼此同步並瞭解去哪裡訪問服務和如何配置,ZooKeeper正是為此而生的。

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

Ambari是最新加入Hadoop的專案,Ambari專案旨在將監控和管理等核心功能加入Hadoop專案。 Ambari可説明系統管理員部署和配置Hadoop,升級集群以及監控服務。 還可通過API集成與其他的系統管理工具。

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

機器學習:Mahout

  

各類組織需求的不同導致相關的資料形形色色,對這些資料的分析也需要多樣化的方法。 Mahout提供一些可擴展的機器學習領域經典演算法的實現,旨在説明開發人員更加方便快捷地創建智慧應用程式。 Mahout包含許多實現,包括集群、分類、推薦過濾、頻繁子項挖掘。

使用Hadoop

通常情況下,Hadoop應用於分散式環境。 就像之前Linux的狀況一樣,廠商集成和測試Apache Hadoop生態系統的元件,並添加自己的工具和管理功能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.