1. 程式人生 > >《Hadoop權威指南》---相關框架

《Hadoop權威指南》---相關框架

hadoop之所以能夠這麼流行,主要是繼承了很多其他優秀的框架,下面就來看看這些有用的框架。

一、Pig

MapReduce使作為程式設計師的你能夠自己定義一個map函式和reduce函式,但是你必須使你的資料處理過程與這一連續的map和reduce模式相匹配,很多時候,資料處理多個MapReduce過程才能夠實現,從而使得資料處理過程與該模式匹配可能很困難,但是有了Pig,就能夠使用更加豐富的資料結構,這些資料結構往往都是多值和巢狀的,並且還提供了一套更加強大的資料變換操作,包括MapReduce中忽視的連線(join)操作。

Pig為大型資料集的處理提供了更高層次的抽象,主要包括兩大部分:

  1. 用於描述資料流的語言,稱為Pig Latin
  2. 用於執行Pig Latin程式的執行環境。當前有兩個環境:單JVM中的本地環境和hadoop叢集上的分散式執行環境

Pig Latin程式由一些列的‘操作’或者‘變換’組成,每個操作或者變換對輸入進行資料處理,併產生輸出結果,從整體上看,這些操作描述了一個數據流。Pig執行環境把資料流翻譯成可執行的內部表示並執行它,在Pig內部,這些變換操作被轉換成一系列MapReduce作業,但是作為程式設計師,你多數情況下並不需要知道這些轉換是如何進行的,這樣一來,你便可以將精力集中在資料上,而非執行細節上。

二、Hive

Hive是一個構建在hadoop上的資料倉庫框架,是應Facebook每天產生的海量新興社會網路資料進行管理和(機器)學習的需求而產生和發展的,在嘗試了不同系統之後,團隊選擇hadoop來儲存和處理資料,因為hadoop的價效比高,同時還可以滿足他們的可伸縮性要求。

Hive的設計目的是讓SQL技能(但是java程式設計技能相對較弱)的分析師能夠對Facebook存放的HDFS中的大規模資料集執行查詢。現在的Hive已經是一個成功的apache專案,很多組織把它作為一個通用的、可伸縮性的資料處理平臺。

三、HBase

HBase是一個HDFS上開發的面向列的分散式資料庫。如果需要實時的隨機訪問超大規模的資料集,就可以使用HBase這一hadoop應用。

雖然資料庫儲存和檢索的實現可以選擇很多不同的策略,但是絕大部分的辦法(特別是關係型資料庫技術的變種)不是為大規模可伸縮性的分佈處理設計的,很多廠商提供了複製和分割槽的解決方案,讓資料庫能夠從單個節點上擴展出去,但是這些附加的技術大都是屬於“事後”的解決辦法,而且非常的難以安裝和維護。並且這些解決辦法常常要犧牲一些重要的RDBMS(關係型資料庫關係系統)特性。在一個“擴充套件的”RDBMS上,連線、複雜查詢、觸發器、試圖以及外來鍵約束這些功能功能要麼執行開銷大,要麼無法用。

HBase從另外體格方向來解決可伸縮性的問題。它自底向上地進行構建、能夠簡單的通過增加節點來達到線性擴充套件。HBase並不是關係熊資料庫,它不支援SQL,但是在特定的問題空間裡,它能夠做RDBMS不能做的事:在臉頰硬體構成的叢集上管理著超大規模的稀疏表。

HBase的一個典型的應用就是webtable,一個以網頁URL為主鍵的表,其中包含爬取的頁面和頁面的屬性。webtable非常大,行數可以達到十億級別。在webtable上連續執行用於批處理分析和解析的MapReduce作業,能夠獲取相關的統計資訊,增加驗證的MIME型別列以及供搜尋引擎進行索引的解析後的文字內容,同時表格還會被以不同執行速度的“爬取器”速記訪問並隨機更新其中的列,在使用者點選網站的快取頁面時,需要實時地將這些被隨機訪問的頁面提供給他們。