1. 程式人生 > >Hadoop圈常用元件簡介

Hadoop圈常用元件簡介

Pig

提供類似SQL的Pig Latin語言,支援filter,groupby,join,orderby等,支援使用者自定義函式;pig會將使用者編寫的指令碼轉換為MR(與Hive類似),並自動優化,執行MR進行查詢操作。

pig可以載入資料、表達轉換資料並存儲最終結果。先使用Load語句從檔案中載入資料,再通過轉換或查詢語句進行資料處理,最後通過Store語句將資料輸出到檔案中或載入到Hive中。

Pig的特點以及Pig、Hive和Impala在應用場景上的區別:

Pig主要面向技術人員,實現即時性的資料查詢與處理,可提高資料查詢和處理效率。Pig是在執行時,才去定義資料模式,而Hive是預先定義資料模式並將元資料儲存在資料庫中,才進行後續的操作,因此Pig對於探索未知性的資料作用非常大,可以資料流的方式,分步分析和處理資料、觀察資料,然後再進行後續的資料分析和處理。而且在載入資料時,也不用關心資料的型別和內容如何。Hive、pig、impala之間,( 摘錄)有一些複雜的文字分析只能用Hive,比如一些CSV的檔案,一些高頻詞的分析,統計分析只能用Hive,Impala不支援.還有一些複雜型別的使用,比如用到陣列,複雜的結構體這些也都只能用Hive。Impala主要用於及時的,互動式的分析,Hive用於穩定性挖掘比較高,實時性挖掘不高的作業。

Hive更適合於資料倉庫的任務,Hive主要用於靜態的結構以及需要經常分析的工作。Hive與SQL相似促使 其成為Hadoop與其他BI工具結合的理想交集。而且很多企業都需要對歷史資料進行分析,Hive就是一款分析歷史資料的利器。但是Hive只有在結構化資料的情況下才能大顯神威。Hive的軟肋是實時分析,如果想要進行實時分析,可以採用HBase。

Pig賦予開發人員在大資料集領域更多的靈活性,並允許開發簡潔的指令碼用於轉換資料流以便嵌入到較大的 應用程式。並且Pig適用於非結構化的資料集,可以充分利用SQL。無需人工構建MapReduce任務,如果有SQL學習的背景,那麼入門會非常快。Pig也可以支援一些複雜的型別,但是pig沒有固定的模型,如果做一些做臨時的資料探索可以用。

Pig相比Hive相對輕量,它主要的優勢是相比於直接使用Hadoop Java APIs可大幅削減程式碼量。正因為如此,Pig仍然是吸引大量的軟體開發人員。( 摘錄結束) 

Tez

DAG作業的計算框架,源於MR框架。將Map拆分為Input、Processor、Sort、Merge和Output;再將Reduce拆分為Input、Shuffle、Sort、Merge、Processor和Output等,分解後的Map類操作與Reduce類操作可進行理細粒度的組合產生新的操作。再通過流程組合,形成DAG,這也為後續的程式優化提供了可能(去除多餘操作如兩個MR任務之間寫入HDFS的操作、合併相同或重複操作如反覆的Map操作等)。Hortonworks將Tez應用在了Hive的優化過程中,使Hive的效能得到了100倍的提升。

基於這個特性,可以將MR、Hive和Pig這類以MR為執行基礎框架的計算框架執行在Tez之上,藉助Tez對MR流程進行優化,以提升效率。

Kafka

高吞吐量的分散式分佈訂閱訊息系統,可以釋出大量訊息,也可以實時訂閱消費訊息。同時滿足線上實時的訊息處理和批量離線的訊息處理。

Kafka的作用是作為資料中樞,使不同的分散式系統(關係資料庫、NoSQL庫、流處理系統、批處理系統)與Hadoop各元件建立資料通道,實現不同型別資料的實時高效互動。

在Kafka框架中,使用了Zookeeper進行了broker和consumer的管理工作。

( 摘錄)

建立Broker後,向zookeeper註冊新的broker資訊,實現在伺服器正常執行下的水平拓展。具體的,通過註冊watcher,獲取partition的資訊。

Topic的註冊,zookeeper會維護topic與broker的關係,通過/brokers/topics/topic.name節點來記錄。

Producer向zookeeper中註冊watcher,瞭解topic的partition的訊息,以動態瞭解執行情況,實現負載均衡。Zookeepr是沒有管理producer,只是能夠提供當前broker的相關資訊。

Consumer可以使用group形式消費kafka中的資料。所有的group將以輪詢的方式消費broker中的資料,具體的按照啟動的順序。Zookeeper會給每個consumer group一個ID,即同一份資料可以被不同的使用者ID多次消費。因此這就是單播與多播的實現。以單個消費者還是以組別的方式去消費資料,由使用者自己去定義。Zookeeper管理consumer的offset跟蹤當前消費的offset。( 摘錄結束)