在組織如何處理資料方面,Apache Hadoop展開了一場史無前例的革命——通過自由可擴充的Hadoop,可以在比以往更短 的時間內,通過新應用創造新價值,並從大資料中提取想要的資料。這次革命企圖使企業建立以Hadoop為中心的資料處理模 式,但是同時也提出一個挑戰:我們如何在Hadoop的自由下進行協作呢?我們如何對任意格式的資料進行儲存和處理,並按 照使用者的希望來共用這些資料呢?此外,我們還需考慮,如何將不同工具以及其他系統整合在一起,組成資料中心即電腦 ?
作為Hadoop的使用者,對中繼資料目錄的需求是明確的。使用者不希望再去“發明輪子”。他們希望與同事合作,分享 結果和過程中的資料集合。結合使用者的需求,很容易確定通用的Hadoop上層中繼資料機制:通過將資料資產註冊到中繼資料記錄 中,不僅能更清楚的瞭解資料資產,更能提升發現和共用的效率。記住,盡量少讓使用者工作。
使用者還希望不同的工 具集和系統能在一起使用——如Hadoop和非Hadoop系統。作為Hadoop使用者,對目前Hadoop群集上不同工具的互通性有明確 的需求:Hive,Pig,Cascading,Java MapReduce,使用了Hadoop Streaming的Python,C/C++,Perl以及Ruby,資料格式 則包括CSV,TSV,Thrift,Protobuf,Avro,SequenceFile以及作為Hive專用格式的RCFile。
最後一點,未經處理資料 通常不是來自於HDFS(HadoopDistributed File System)。這就需要將不同類型系統的資源註冊一個中心節點上,以滿足HDFS的ETL 及Hadoop分析結果對其他系統發布的需求。
Curt,你說得對……HCatalog真的很重要
Curt Monash最近發表 了一篇文章,題名為“HCatalog——它很重要”從多個方面切中要害,推薦大家閱讀。在這篇文章中,Curt認為HCatalog作 為Hadoop叢集的中繼資料服務,其價值可以媲美資料庫管理系統(DBMS)。雖然這一點目前還在研究中,但仍有必要說明, HCatalog相當於Hadoop串連公司專屬應用程式生態系統的介面,十分重要。
這篇文章中還包含Curt對HCatalog定義、曆史和 用途深入研究的內容。
HCatalog的定義
Hadoop最迷人的特性之一就是在不使用Schema的情況下,可以靈活 的處理半結構化資料和非結構化資料。大多數組織中,非結構化資料佔全體資料的80%,而增長速度也是結構化資料的10-50 倍。Hadoop確實擅長從非結構化資料中提取結構化資料。HCatalog協助Hadoop通過訪問挖掘後的結構化資料傳遞價值,提供 給需要這些資料的分析人員、系統和應用。
HCatalog是Hadoop的中繼資料和資料表的管理系統。它基於Hive中的元數 據層,通過類似SQL的語言展現Hadoop資料的關聯關係。HCatalog允許使用者通過Hive,Pig,MapReduce共用資料和中繼資料。 它的另一特點就是在使用者編寫應用程式時,無需關心資料怎麼儲存,在哪裡儲存,還避免使用者因schema和儲存格式的改變而 受到影響。
這種靈活性最終減少了對資料產生者、使用者、管理者的影響,為他們提供了清晰的合作基礎。在不影 響到使用者的應用程式讀取資料的情況下,資料產生者可以在資料中增加新列。在不影響生產者或使用者的情況下,管理員 可以遷移資料或是改變資料的儲存格式。通過HCatalog,新資料集更容易找到並通知他們的使用者。
通過HCatalog ,使用者能夠通過工具訪問Hadoop上的Hive metastore。它為MapReduce和Pig提供了連接器,使用者可以使用工具對Hive的關聯 列格式的資料進行讀寫。對於不在Hive上通過Hive DDL語句操作metasotre的使用者,HCatalog提供了命令列工具。它還提供 了通知服務,如果使用Oozie這樣的工作流程工具,在有新資料可用的時候,就可以得到通知。
Hadoop的REST介面
Templeton是小說《夏洛特的網》中的一個角色。它是一個貪吃的老鼠,會為主角(小豬威爾伯)提供協助,但是幫 助的目的僅僅是為了食物。在Hadoop中,Templeton通在中繼資料上層提供REST介面,來協助HCatalog。它為Hadoop提供了 REST API介面,允許外部資源不通過Hadoop內建API與Hadoop互動。這隻貪吃的老鼠為我們所有人提供了一個簡單易懂而且 常見的介面,開啟了一扇通往Hadoop的大門。通過這種方式,它為所有應用開發人員開放了Hadoop。
Templeton更像 Hive之上的一個JDBC連接器。REST介面通過HTTP協議,為已有應用及新應用提供了一個動態共用的中繼資料層。它為HTTP客戶 端開放了映射在HCatalog和Hive中的資源。
HCatalog的實際應用
這裡列出HCatalog的3個基本用途。
1. 實現工具之間的通訊
重度Hadoop使用者絕不會使用單獨的工具進行資料處理。一般情況下,使用者和團隊開 始可能只使用一種工具:如Hive,Pig,Map Reduce,或者其他什麼。隨著他們對Hadoop使用的深入,他們會發現所使用的 工具對於他們的新任務來說,不是最優的。開始使用Hive進行分析查詢的使用者,更願意使用Pig為ETL過程處理或建立資料模 型。開始使用Pig的使用者發現,他們更想使用Hive進行分析型查詢。儘管Pig和Map Reduce這樣的工具不需要中繼資料,但元數 據的出現依然為它們帶來不少益處。通過中繼資料存放區的共用,能使使用者更方便的在不同工具間共用資料。比如在Map Reduce 或Pig中載入資料並進行正常化,然後通過Hive進行分析,這樣的工作流程已經很普遍了。當所有這些工具都共用一個 metastore時,各個工具的使用者就能夠即時訪問其他工具建立的資料,而無需載入和傳輸的步驟。
2. 資料發現
當用於資料分析的時候,使用者可以使用Hadoop從未經處理資料中提取結構化資訊。他們通常使用Pig,Hadoop的 Streaming和Map Reduce來分析資料,尋找新的關注點。一般而言,只有在大型分析環境中,資訊的價值才能得以體現。通 過HCatalog將分析結果發布出來,你的分析平台就可以通過REST服務來訪問這些內容。在這種情況下,schema決定了發現。 這些發現對於資料科學家來說也很有用。通常,他們以別人建立的資料或分析結果作為下一個發現的輸入。在HCatalog中注 冊資料實際上是宣布有新資料可用。
3. 系統整合
作為一個處理和儲存資料環境來說,Hadoop為公司專屬應用程式提 供了太多的機會。但為了充分使用它,必須要增強現有工具並配合使用。Hadoop應當作為你的分析平台的輸入,或者與你的 業務資料存放區和Web應用整合。組織應該享受Hadoop帶來的價值,無需學習工具使用等新的內容。有了Templeton提供的REST 服務,就可以通過常見的API和類SQL語言將平台開放給企業。通過這種方式,它開放了整個平台。
作為公司專屬應用程式 Hadoop的準備,HCatalog代表著下一個合理的延伸。是的,Curt,它確實重要……很重要!