2013年12月14日 星期六

New Techs of Hadoop 2.0: Tez, Stinger, Knox & Falcon (1)



Tcloud 這次很榮幸請到Hortonworks 亞太區Technical Director Jeff 來台灣演講,這次他分享的題目是Hadoop 2.0 - Tez, Stinger, Knox & Falcon,Hadoop 2.0 GA 也已經一段時間了,但是到底有做了怎樣的改變呢?常常聽到Hadoop 2.0 產生了許多新名詞和新的子專案,到底有哪些,個是什麼意思?現在正夯的Real Time Query Solution對於Hadoop 2.0 會有有什麼影響?....我們有很多問題,而Jeff 這個Talk 的確解答了我們很多的問題,且讓我分成幾個篇幅來分享我所聽到與了解的內容。




YARN


Hadoop 2.0 最大的改變就應該就是加入了YARN的架構,而任何新技術的產生通常都是為了解決特定的問題,那我們不禁要問YARN要解決的是什麼問題呢?

YARN要解決的就是資源分配的問題,些問題大多來自於擁有超大型Hadoop叢集的重度使用者,像是Yahoo、Facebook...等公司,在這些公司他們使用(or 測試)發現了Hadoop 1.x 所會遇到的問題甚至是瓶頸與極限:
  1. Hadoop 1.x 的Cluster 所能管理與有效使用的node數量大概是4000個,如何能擴展成更大的Cluster?或是在限制內更有效運用資源?
  2. 越來越多廠商把Hadoop 建立在虛擬化架構上(or Cloud),如何有效運用資源(Cost Effective)?如何增加使用率(Better Utilization)? Hadoop Cluster 閒置時我是否可以拿來做其他運用?
  3. 為了避免Hbase Region Server的Resource 資源被Map Reduce 吃掉,所以一般建議的Use case都會把Hbase 和 Hadoop 兩個Cluster 獨立開來,但是這樣不就失去了Hadoop Process on Data 的概念嘛?是否有有效讓Hbase 和 Hadoop 共存呢?
這些問題的根本都在於Hadoop 1.x 的工作(也就是MapReduce)都是由Job Tracker和Task Tracker在管理,而他們也只認識自己管理的工作,也就是說在同一台電腦裡面如果跑了其他的程式或Service,他們是不知道也不認識,更不可能在調配資源的時候把他們納入考量。

因此YARN 就是把整個監控的視野提升到整個System Level,把其他所有Application 都納入控管的範圍。


更多Container 的概念可以參考董博的 - 深入理解YARN Container的概念

Tez

而Tez也是在Hadoop 2.0 中很重要的一個部分,傳統的MapReduce 並不適合Interactive Process(or Analytic) ,原因主要有兩個:
  1. 就算是連續的運算(運算Input Depend on 上一個運算結果),每次的中減產出結果都必須先寫回HDFS
  2. 每次啟動Task的成本太高,每個Iteration都必須重新啟動新的Task,Iteration越多成本越高效能越遭。
因此Tez 主要的目的就是:
  1. 打造Always On 的MapReduce,讓Task繼續保留不會因為每個階段的工作做完就要重啟Task。
  2. Tez avoids unneeded write to HDFS
而要達到這個目的的作法就是另用Tez Container 的特性(always ready for immediate use),達到Tez Session的概念,這個Session 就很像Relation database 的Transcation很像,以Hive為例,下了一個Query可能會被分成3段獨立MapRecude Job來做,而Tez Session就是把這整個Query是為整體,不會每次重啟Task,把中間產出的Data Cache起來,以放便下一個ˊ階段直接使用(其實Spark也是運用類似的概念),概念就如下圖所示:



 圖片來源:hortonwork

更多詳細的內容可以參考:


Next:New Techs of Hadoop 2.0: Tez, Stinger, Knox & Falcon (2)
張貼留言