當前位置:
首頁 >
Yarn取代job/task tracker
發布時間:2025/3/18
38
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Yarn取代job/task tracker
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://www.aboutyun.com/thread-7678-1-1.html
?
問題導讀: 1、什么是yarn? 2、Yarn 和MapReduce相比,它有什么特殊作用 ?背景 Yarn是一個分布式的資源管理系統,用以提高分布式的集群環境下的資源利用率,這些資源包括內存、IO、網絡、磁盤等。其產生的原因是為了解決原MapReduce框架的不足。最初MapReduce的committer們還可以周期性的在已有的代碼上進行修改,可是隨著代碼的增加以及原MapReduce框架設計的不足,在原MapReduce框架上進行修改變得越來越困難,所以MapReduce的committer們決定從架構上重新設計MapReduce,使下一代的MapReduce(MRv2/Yarn)框架具有更好的擴展性、可用性、可靠性、向后兼容性和更高的資源利用率以及能支持除了MapReduce計算框架外的更多的計算框架。
?
原MapReduce框架的不足 l??JobTracker是集群事務的集中處理點,存在單點故障 l??JobTracker需要完成的任務太多,既要維護job的狀態又要維護job的task的狀態,造成過多的資源消耗 l??在taskTracker端,用map/reduce task作為資源的表示過于簡單,沒有考慮到cpu、內存等資源情況,當把兩個需要消耗大內存的task調度到一起,很容易出現OOM l??把資源強制劃分為map/reduce slot,當只有map task時,reduce slot不能用;當只有reduce task時,map slot不能用,容易造成資源利用不足。?
? Yarn架構 Yarn/MRv2最基本的想法是將原JobTracker主要的資源管理和job調度/監視功能分開作為兩個單獨的守護進程。有一個全局的ResourceManager(RM)和每個Application有一個ApplicationMaster(AM),Application相當于map-reduce job或者DAG jobs。ResourceManager和NodeManager(NM)組成了基本的數據計算框架。ResourceManager協調集群的資源利用,任何client或者運行著的applicatitonMaster想要運行job或者task都得向RM申請一定的資源。ApplicatonMaster是一個框架特殊的庫,對于MapReduce框架而言有它自己的AM實現,用戶也可以實現自己的AM,在運行的時候,AM會與NM一起來啟動和監視tasks。
?
2、??資源監視 Scheduler會周期性的接收來自NM的資源使用率的監控信息,另外applicationMaster可以從Scheduler得到屬于它的已完成的container的狀態信息。?
3、??application提交 l??client向AsM獲得一個applicationID l??client將application定義以及需要的jar包文件等上傳到hdfs的指定目錄,由yarn-site.xml的yarn.app.mapreduce.am.staging-dir指定 l??client構造資源請求的對象以及application的提交上下文發送給AsM l??AsM接收application的提交上下文 l??AsM根據application的信息向Scheduler協商一個Container供applicationMaster運行,然后啟動applicationMaster l??向該container所屬的NM發送launchContainer信息啟動該container,也即啟動applicationMaster l??AsM向client提供運行著的AM的狀態信息。?
4、??AM的生命周期 AsM負責系統中所有AM的生命周期的管理。AsM負責AM的啟動,當AM啟動后,AM會周期性的向AsM發送heartbeat,默認是1s,AsM據此了解AM的存活情況,并且在AM失敗時負責重啟AM,若是一定時間過后(默認10分鐘)沒有收到AM的heartbeat,AsM就認為該AM失敗了。?
關于ResourceManager的可用性目前還沒有很好的實現,不過Cloudera公司的CDH4.4以后的版本實現了一個簡單的高可用性,使用了Hadoop-common項目中HA部分的代碼,采用了類似hdfs namenode高可用性的設計,給RM引入了active和standby狀態,不過沒有與journalnode相對應的角色,只是由zookeeper來負責維護RM的狀態,這樣的設計只是一個最簡單的方案,避免了手動重啟RM,離真正的生產可用還有一段距離。 ? NodeManager NM主要負責啟動RM分配給AM的container以及代表AM的container,并且會監視container的運行情況。在啟動container的時候,NM會設置一些必要的環境變量以及將container運行所需的jar包、文件等從hdfs下載到本地,也就是所謂的資源本地化;當所有準備工作做好后,才會啟動代表該container的腳本將程序啟動起來。啟動起來后,NM會周期性的監視該container運行占用的資源情況,若是超過了該container所聲明的資源量,則會kill掉該container所代表的進程。 另外,NM還提供了一個簡單的服務以管理它所在機器的本地目錄。Applications可以繼續訪問本地目錄即使那臺機器上已經沒有了屬于它的container在運行。例如,Map-Reduce應用程序使用這個服務存儲map output并且shuffle它們給相應的reduce task。 在NM上還可以擴展自己的服務,yarn提供了一個yarn.nodemanager.aux-services的配置項,通過該配置,用戶可以自定義一些服務,例如Map-Reduce的shuffle功能就是采用這種方式實現的。 NM在本地為每個運行著的application生成如下的目錄結構:?
Container目錄下的目錄結構如下: 在啟動一個container的時候,NM就執行該container的default_container_executor.sh,該腳本內部會執行launch_container.sh。launch_container.sh會先設置一些環境變量,最后啟動執行程序的命令。對于MapReduce而言,啟動AM就執行org.apache.hadoop.mapreduce.v2.app.MRAppMaster;啟動map/reduce task就執行org.apache.hadoop.mapred.YarnChild。 ApplicationMaster ApplicationMaster是一個框架特殊的庫,對于Map-Reduce計算模型而言有它自己的applicationMaster實現,對于其他的想要運行在yarn上的計算模型而言,必須得實現針對該計算模型的applicaitonMaster用以向RM申請資源運行task,比如運行在yarn上的spark框架也有對應的applicationMaster實現,歸根結底,yarn是一個資源管理的框架,并不是一個計算框架,要想在yarn上運行應用程序,還得有特定的計算框架的實現。由于yarn是伴隨著MRv2一起出現的,所以下面簡要概述MRv2在yarn上的運行流程。
轉載于:https://www.cnblogs.com/augustone/p/6275720.html
總結
以上是生活随笔為你收集整理的Yarn取代job/task tracker的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: erlang md5
- 下一篇: 将war包发布到测试服的常用命令