溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何簡單的寫yarn app

發(fā)布時(shí)間:2021-12-21 11:54:13 來源:億速云 閱讀:110 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何簡單的寫yarn app,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

盡管YARN自帶的編程API已經(jīng)得到了極大的簡化,但從頭開發(fā)一個(gè)YARN應(yīng)用程序仍是一件非常困難的事情。在YARN上編寫一個(gè)應(yīng)用程序,你需要開發(fā)Client和ApplicationMaster兩個(gè)模塊,并了解涉及到的幾個(gè)協(xié)議的若干API和參數(shù)列表,其中ApplicationMaster還要負(fù)責(zé)資源申請,任務(wù)調(diào)度、容錯(cuò)等,總之,整個(gè)過程非常復(fù)雜。

Apache Twill(http://twill.apache.org/index.html)這個(gè)項(xiàng)目則是為簡化YARN上應(yīng)用程序開發(fā)而成立的項(xiàng)目,該項(xiàng)目把與YARN相關(guān)的重復(fù)性的工作封裝成庫,使得用戶可以專注于自己的應(yīng)用程序邏輯。

下面代碼示例是使用Apache Twill開發(fā)一個(gè)運(yùn)行在YARN上的helloworld程序:

public class HelloWorld {
static Logger LOG = LoggerFactory.getLogger(HelloWorld.class);
static class HelloWorldRunnable extends AbstractTwillRunnable {
@Override
public void run() {
LOG.info("Hello World");
}
}

public static void main(String[] args) throws Exception {
YarnConfiguration conf = new YarnConfiguration();
TwillRunnerService runner = new YarnTwillRunnerService(conf, "localhost:2181");
runner.startAndWait();
TwillController controller = runner.prepare(new HelloWorldRunnable())?.start();
Services.getCompletionFuture(controller).get();
}

Twill所做的事情是開發(fā)了一個(gè)通用的Client和ApplicationMaster實(shí)現(xiàn),并提供了一套編程API,使得用戶可直接實(shí)現(xiàn)這套API便可以編寫運(yùn)行在YARN上的分布式程序。Twill應(yīng)用程序運(yùn)行在YARN上的流程跟普通程序一樣,流程圖下:

如何簡單的寫yarn app

為極大地方便用戶編寫運(yùn)行在YARN上的分布式應(yīng)用程序,Twill做了大量通用模塊和特性,包括:

(1)實(shí)時(shí)日志收集

基于kafka實(shí)現(xiàn)了日志收集功能,可將應(yīng)用程序產(chǎn)生的日志實(shí)時(shí)收集起來,便于集中化分析和展示。

(2)資源匯報(bào)

可實(shí)時(shí)收集任務(wù)占用的各類資源,包括cpu利用率,物理內(nèi)存等。

(3)資源彈性擴(kuò)展

可動(dòng)態(tài)改變應(yīng)用程序占用的資源,比如將container數(shù)目在線由5個(gè)增長為10個(gè)。

(4)狀態(tài)恢復(fù)

當(dāng)客戶端失去與應(yīng)用程序鏈接后,可通過API重構(gòu)一個(gè)新的客戶端,重新獲取狀態(tài)。

(5)服務(wù)發(fā)現(xiàn)

應(yīng)用程序可向zookeeper注冊一些信息,便于其他服務(wù)或者客戶端發(fā)現(xiàn)該應(yīng)用程序的位置,以便與之通信。

隨著YARN越來越成熟,它必將成為一個(gè)基礎(chǔ)核心系統(tǒng),屆時(shí)與Apache Twill類似的項(xiàng)目顯得尤為重要。

上述內(nèi)容就是如何簡單的寫yarn app,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI