Wednesday, August 16, 2017

Big Data(三):Hadoop Ecosystem 3

Big Data(三):Hadoop Ecosystem 3

2017/08/16

前言:

本次還是介紹 Hadoop 生態系。從 Hadoop 1.x 到 2.0,最主要是 YARN 的導入,以及 Tez 等新專案 [1]-[4]。此外,經由 YARN 的架構,我們可以釐清 HBase 與 MapReduce 究竟是否為平行的關係 [5], [6]。最後,補充一個很基本的專案 Sqoop [5]。 

-----

Outline

1. YARN
2. Tez
3. HBase
4. Sqoop

-----

1. YARN

「YARN (Yet Another Resource Negotiator,亦稱 Map/Reduce v2 或 MRv2)」 [2]。

參考圖1。

「Hadoop 1.x 的工作(也就是MapReduce)都是由Job Tracker和Task Tracker在管理,而他們也只認識自己管理的工作,也就是說在同一台電腦裡面如果跑了其他的程式或Service,他們是不知道也不認識,更不可能在 調配資源的時候把他們納入考量。」[1]

「Yarn是 Hadoop的資源管理框架,他將MapReduce結構從1.0抽離出來,變成一個"Framework",然後將JobTracker與TaskTracker中的資源管理部份抽離出來,發展成Yarn,藉此控管整個資源的分配。」[3]


Fig. 1. YARN [1].

-----

參考圖2。

「在 Hadoop 2.0 的架構中,原來做批次處理的 Map/Reduce 應用程式,包含 Pig、Hive,可以在不修改程式碼的情況下,重新編譯,即能跑在 Map/Reduce over YARN 的軟體堆疊上。而更多新、舊的應用場景,如 HBase、Giraph、Spark、Storm、OpenMPI、Tez,也都能在同一個平行運算框架 YARN 上執行。」[2]

「這些基於 YARN 的應用類型,可以歸結為四大類: Batch (批次處理):如原來的 Map/Reduce (v1)。 Interactive (互動處理):如新增的 Tez (ASF Incubator),可整合 Pig 與 Hive 應用。 Online (線上查詢):如 HBase、Hoya (Hortonworks 推的 HBase on YARN)。 Streaming (文字串流):如 Storm 或 Kafka (ASF Incubator)。」[2]

-----
 


Fig. 2. YARN [2].

-----

2. Tez

「Tez也是在Hadoop 2.0 中很重要的一個部分,傳統的MapReduce 並不適合Interactive Process(or Analytic) ,原因主要有兩個: 就算是連續的運算(運算Input Depend on 上一個運算結果),每次的中減產出結果都必須先寫回HDFS 每次啟動Task的成本太高,每個Iteration都必須重新啟動新的Task,Iteration越多成本越高效能越遭。 因此Tez 主要的目的就是: 打造Always On 的MapReduce,讓Task繼續保留不會因為每個階段的工作做完就要重啟Task。 Tez avoids unneeded write to HDFS」[1]

「從 Amazon EMR 版本 5.x 開始,Hive 和 Pig 都使用 Apache Tez 取代 Hadoop MapReduce 做為執行引擎。」[4]

-----

3. HBase

圖3中,HBase 與 MapReduce 的位置屬於平行的關係,可以參考下方的說明。

「為了避免Hbase Region Server的Resource 資源被Map Reduce 吃掉,所以一般建議的Use case都會把Hbase 和 Hadoop 兩個Cluster 獨立開來,但是這樣不就失去了Hadoop Process on Data 的概念嘛?是否有有效讓Hbase 和 Hadoop 共存呢?」[1]

然而在圖4中,HBase 是必須呼叫 MapReduce 的。

這個問題,如果放到 YARN 的架構上,就可以知道,MapReduce 的 Batch Processing 跟 HBase 的 Online Processing 在功能上是平行的。然後 HBase 呼叫的 YARN 裡面的 Job Tracker 和 Task Tracker 在舊版 Hadoop 1.x 中是屬於 MapReduce 的。

-----


Fig. 3. Hadoop Ecosystem, p. 36 [5].

-----



Fig. 4. Hadoop Ecosystem, p. 10 [6].

-----

4. Sqoop

本節補充一下圖3裡面一個很重要的專案:Sqoop。它的功能主要是把 SQL 資料庫的資料搬到 Hadoop,以便享有分散式運算等種種好處,分析完後的資料,也可以再搬回 SQL 資料庫。

-----

結論:

先簡單釐清 Hadoop 生態系的架構,有助於後續深入探討。

-----

References

[1] New Techs of Hadoop 2.0  Tez, Stinger, Knox & Falcon (1) - 阿貝好威的實驗室
http://lab.howie.tw/2013/12/new-techs-of-hadoop-20-tez-stinger-knox.html 

[2] Fred 豢養的雲中象  Hadoop 2.0 — 讓大象跳舞的 YARN
http://fredbigdata.blogspot.tw/2013/08/hadoop-20-yarn.html 

[3] Big Data 新寵兒 Apache Spark 系列 - Spark 與 Hadoop 初次見面篇 @ Vetom - Study   隨意窩 Xuite日誌
http://blog.xuite.net/dain198/study/320533598-Big+Data+%E6%96%B0%E5%AF%B5%E5%85%92+Apache+Spark+%E7%B3%BB%E5%88%97+-+Spark+%E8%88%87+Hadoop+%E5%88%9D%E6%AC%A1%E8%A6%8B%E9%9D%A2%E7%AF%87

[4] 什麼是 Hadoop? – Amazon Web Services (AWS)
https://aws.amazon.com/tw/emr/details/hadoop/

[5] 2015_Guide to high performance distributed computing, case studies with Hadoop, Scalding and Spark

[6] 2013_Hadoop Operations and Cluster Management Cookbook, pp. 12-13

No comments: