開(kāi)發(fā) YARN 應(yīng)用程序
使用 YARN 提供的強(qiáng)大的新功能和在 Hadoop 之上構(gòu)建自定義應(yīng)用程序框架的能力,您還會(huì)面臨新的復(fù)雜性。為 YARN 構(gòu)建應(yīng)用程序,比在 YARN 之前的 Hadoop 之上構(gòu)建傳統(tǒng) MapReduce 應(yīng)用程序要復(fù)雜得多,因?yàn)槟枰_(kāi)發(fā)一個(gè) ApplicationMaster,這就是在客戶端請(qǐng)求到達(dá)時(shí)啟動(dòng)的 ResourceManager。ApplicationMaster 有多種需求,包括實(shí)現(xiàn)一些需要的協(xié)議來(lái)與 ResourceManager 通信(用于請(qǐng)求資源)和 NodeManager(用于分配容器)。對(duì)于現(xiàn)有的 MapReduce 用戶,MapReduce ApplicationMaster 可最大限度地減少所需的任何新工作,從而使部署 MapReduce 作業(yè)所需的工作量與 YARN 之前的 Hadoop 類似。
在許多情況下,YARN 中一個(gè)應(yīng)用程序的生命周期類似于 MRv1 應(yīng)用程序。YARN 在一個(gè)集群中分配許多資源,執(zhí)行處理,公開(kāi)用于監(jiān)視應(yīng)用程序進(jìn)度的接觸點(diǎn),且最終在應(yīng)用程序完成時(shí)釋放資源并執(zhí)行一般清理。這個(gè)生命周期的一種樣板實(shí)現(xiàn)可在一個(gè)名為 Kitten 的項(xiàng)目中獲得(參見(jiàn) 參考資料)。Kitten 是一組工具和代碼,可簡(jiǎn)化 YARN 中的應(yīng)用程序開(kāi)發(fā),從而使您能夠?qū)⒕性趹?yīng)用程序的邏輯上,并在最初忽略協(xié)商和處理 YARN 集群中各種實(shí)體的局限性的細(xì)節(jié)。但是,如果希望更深入地研究,Kitten 提供了一組服務(wù),可用于處理與其他集群實(shí)體(比如 ResourceManager)的交互。Kitten 提供了自己的 ApplicationMaster,很適用,但僅作為一個(gè)示例提供。Kitten 大量使用了 Lua 腳本作為其配置服務(wù)。
下一步計(jì)劃
盡管 Hadoop 繼續(xù)在大數(shù)據(jù)市場(chǎng)中發(fā)展,但它已開(kāi)始了一場(chǎng)演變,以解決有待定義的大規(guī)模數(shù)據(jù)工作負(fù)載。YARN 仍然在積極發(fā)展且可能不適合生產(chǎn)環(huán)境,但 YARN 相對(duì)傳統(tǒng)的 MapReduce 而言提供了重要優(yōu)勢(shì)。它允許開(kāi)發(fā) MapReduce 之外的新分布式應(yīng)用程序,允許它們彼此同時(shí)共存于同一個(gè)集群中。YARN 構(gòu)建于當(dāng)前 Hadoop 集群的現(xiàn)有元素之上,但也改進(jìn)了 JobTracker 等元素,可以提高可伸縮性和增強(qiáng)許多不同應(yīng)用程序共享集群的能力。YARN 很快會(huì)來(lái)到您近旁的 Hadoop 集群中,帶來(lái)它的全新功能和新復(fù)雜性。
參考資料
學(xué)習(xí)