Hadoop:你不得不瞭解的大資料工具
如今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生態系統的元件,並新增自己的工具和管理功能。(李智/編譯)
原文連結:Forbes.com
相關文章
- **大資料hadoop瞭解**大資料Hadoop
- 你不得不瞭解的CSS資料型別CSS資料型別
- 瞭解這幾個大資料應用案例,讓你更瞭解大資料!大資料
- 你不得不瞭解的HTML知識HTML
- 大資料hadoop工具大資料Hadoop
- 你必須瞭解的大資料分析軟體大資料
- 大資料時代之你不得不知道的大資料概念大資料
- 十八款Hadoop工具幫你馴服大資料Hadoop大資料
- 大資料是什麼?一文帶你瞭解大資料的概念!大資料
- 大資料造成的這些影響你未必瞭解大資料
- 大資料初步瞭解大資料
- 你不得不瞭解的前後端分離原理!後端
- 能窺見未來的大資料+AI,你瞭解多少?大資料AI
- 大資料時代下,App資料隱私安全你真的瞭解麼?大資料APP
- 今夜,大資料帶你瞭解當代青年加班狗大資料
- 你真的不瞭解這個星球——漲姿勢的大資料大資料
- 大資料如何應用在智慧城市中?讓你瞭解什麼是城市大資料。大資料
- 關於大資料你應該瞭解的五件事兒大資料
- 五個故事瞭解大資料大資料
- 你不得不瞭解 Helm 3 中的 5 個關鍵新特性
- Java後端開發三年,你不得不瞭解的JVMJava後端JVM
- 帶你瞭解資料庫中JOIN的用法資料庫
- 帶你瞭解資料庫中group by的用法資料庫
- 大資料hadoop資料大資料Hadoop
- 一文帶你瞭解關於資料清洗的三大問題
- 工信部認證的大資料工程師證書你有多瞭解?大資料工程師
- 前端不得不瞭解的 Flex 佈局前端Flex
- 前端不得不瞭解的TCP協議前端TCP協議
- 白話大資料 | 元宇宙來了,但是你瞭解後設資料嗎?大資料元宇宙
- AI時代,還不瞭解大資料?AI大資料
- 學習大資料必須瞭解的大資料開發課程大綱大資料
- 揭秘你不曾瞭解的看板工具箱
- BDA:Hadoop生態大資料工具的漏洞掃描器Hadoop大資料
- 大資料分析系統Hadoop的13個開源工具!大資料Hadoop開源工具
- 大資料分析系統Hadoop的13個開源工具大資料Hadoop開源工具
- 分享Hadoop處理大資料工具及優勢Hadoop大資料
- 2019年資料時代,你瞭解大資料未來的發展趨勢嗎?大資料
- 利用大資料做好消費者運營,你該瞭解這些大資料