Hadoop Container&Hadoop Failover

Hadoop Container

YARN - Container

  1. 基本的資源單位(CPU、內存等)

  2. Container可以加載任意程序,而且不限於Java

  3. 一個Node可以包含多個Container,也可以是一個大的Container

  4. ApplicationMaster可以根據需要,動態申請和釋放Container

Hadoop Failover

YARN - Failover

失敗類型

  1. 程序問題

  2. 進程崩潰

  3. 硬件問題

失敗處理

任務失敗

  1. 運行時異常或者JVM退出都會報告給ApplicationMaster

  2. 通過心跳來檢查掛住的任務(timeout),會檢查多次(可配置)才判斷該任務是否失效

  3. 一個作業的任務失敗率超過配置,則認爲該作業失敗

  4. 失敗的任務或作業都會有ApplicationMaster重新運行

ApplicationMaster失敗

  1. ApplicationMaster定時發送心跳信號到ResourceManager,通常一旦ApplicationMaster失敗,則認爲失敗,但也可以通過配置多次後才失敗

  2. 一旦ApplicationMaster失敗,ResourceManager會啓動一個新的ApplicationMaster

  3. 新的ApplicationMaster負責恢復之前錯誤的ApplicationMaster的狀態(yarn.app.mapreduce.am.job.recovery.enable=true),這一步是通過將應用運行狀態保存到共享的存儲上來實現的,ResourceManager不會負責任務狀態的保存和恢復

  4. Client也會定時向ApplicationMaster查詢進度和狀態,一旦發現其失敗,則向ResouceManager詢問新的ApplicationMaster

NodeManager失敗

  1. NodeManager定時發送心跳到ResourceManager,如果超過一段時間沒有收到心跳消息,ResourceManager就會將其移除

  2. 任何運行在該NodeManager上的任務和ApplicationMaster都會在其他NodeManager上進行恢復

  3. 如果某個NodeManager失敗的次數太多,ApplicationMaster會將其加入黑名單(ResourceManager沒有),任務調度時不在其上運行任務

ResourceManager失敗

  1. 通過checkpoint機制,定時將其狀態保存到磁盤,然後失敗的時候,重新運行

  2. 通過zookeeper同步狀態和實現透明的HA

可以看出,一般的錯誤處理都是由當前模塊的父模塊進行監控(心跳)和恢復。而最頂端的模塊則通過定時保存、同步狀態和zookeeper來ֹ實現HA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章