Apache YARNHadoop 資源管理器
Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協(xié)調(diào)者)是一種新的 Hadoop 資源管理器,前不久被提升為高層次的Hadoop子項目。
YARN最初是為了修復(fù)MapReduce實現(xiàn)里的明顯不足,并對可伸縮性(支持一萬個節(jié)點和二十萬個內(nèi)核的集群)、可靠性和集群利用率進行了提升。
YARN實現(xiàn)這些需求的方式是,把Job Tracker的兩個主要功能(資源管理和作業(yè)調(diào)度/監(jiān)控)分成了兩個獨立的服務(wù)程序——全局的資源管理(RM)和針對每個應(yīng)用的應(yīng)用 Master(AM),這樣,一個應(yīng)用要么是傳統(tǒng)意義上的MapReduce任務(wù),要么是任務(wù)的有向無環(huán)圖(DAG)。
和Hadoop里的其他內(nèi)容一樣,YARN的資源管理和執(zhí)行框架都是按主/從范例實現(xiàn)的——節(jié)點管理器(NM)運行、監(jiān)控每個節(jié)點,并向資源管理器報告資源的可用性狀態(tài),和HDFS的架構(gòu)相比,最終為系統(tǒng)里所有應(yīng)用分配資源的是資源管理器。
特定應(yīng)用的執(zhí)行由應(yīng)用Master控制,AM負責(zé)將一個應(yīng)用分割成多個任務(wù),并和資源管理器協(xié)調(diào)執(zhí)行所需的資源。資源一旦分配好,應(yīng)用Master就和節(jié)點管理器一起安排、執(zhí)行、監(jiān)控獨立的應(yīng)用任務(wù)。
YARN驅(qū)動使用“應(yīng)用提交客戶端(Application Submission Clien)”將一個“應(yīng)用”提交給YARN資源管理器。借助“ClientRMProtocol”,客戶端先獲取一個新的“應(yīng)用ID”,然后提交運行 “應(yīng)用”。應(yīng)用提交的信息里,包含應(yīng)用Master要啟動的Unix進程信息。提交信息還描述了應(yīng)用運行要使用的本地文件/jar,執(zhí)行需要的實際命令, 以及各種Unix環(huán)境設(shè)置等??梢?a target="_blank">在這里查看編寫YARN驅(qū)動的詳情。
需要注意的是,YARN并不會改變MapReduce編程模型,它只是應(yīng)用開發(fā)人員使用的API。YARN提供了一種新的資源管理模型和實現(xiàn),用來 執(zhí)行MapReduce任務(wù)。因此,在最簡單的情況下,現(xiàn)有的MapReduce應(yīng)用仍然能照原樣運行(需要重新編譯),YARN只不過能讓開發(fā)人員更精 確地指定執(zhí)行參數(shù)。
另外,YARN可用來創(chuàng)建新的框架和除MapReduce之外的執(zhí)行模型,可以同時利用Hadoop集群的計算能力和豐富的數(shù)據(jù)存儲模型,來解決具 體的新問題。這些新的框架還可以利用YARN的資源管理,提供新的應(yīng)用管理器實現(xiàn)。此外,這種架構(gòu)還允許多個應(yīng)用管理器同時存在,共享同一個Hadoop 集群和駐留在集群上的數(shù)據(jù)。
via InfoQ
