您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何簡單的寫yarn app,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
盡管YARN自帶的編程API已經得到了極大的簡化,但從頭開發一個YARN應用程序仍是一件非常困難的事情。在YARN上編寫一個應用程序,你需要開發Client和ApplicationMaster兩個模塊,并了解涉及到的幾個協議的若干API和參數列表,其中ApplicationMaster還要負責資源申請,任務調度、容錯等,總之,整個過程非常復雜。
Apache Twill(http://twill.apache.org/index.html)這個項目則是為簡化YARN上應用程序開發而成立的項目,該項目把與YARN相關的重復性的工作封裝成庫,使得用戶可以專注于自己的應用程序邏輯。
下面代碼示例是使用Apache Twill開發一個運行在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所做的事情是開發了一個通用的Client和ApplicationMaster實現,并提供了一套編程API,使得用戶可直接實現這套API便可以編寫運行在YARN上的分布式程序。Twill應用程序運行在YARN上的流程跟普通程序一樣,流程圖下:
為極大地方便用戶編寫運行在YARN上的分布式應用程序,Twill做了大量通用模塊和特性,包括:
(1)實時日志收集
基于kafka實現了日志收集功能,可將應用程序產生的日志實時收集起來,便于集中化分析和展示。
(2)資源匯報
可實時收集任務占用的各類資源,包括cpu利用率,物理內存等。
(3)資源彈性擴展
可動態改變應用程序占用的資源,比如將container數目在線由5個增長為10個。
(4)狀態恢復
當客戶端失去與應用程序鏈接后,可通過API重構一個新的客戶端,重新獲取狀態。
(5)服務發現
應用程序可向zookeeper注冊一些信息,便于其他服務或者客戶端發現該應用程序的位置,以便與之通信。
隨著YARN越來越成熟,它必將成為一個基礎核心系統,屆時與Apache Twill類似的項目顯得尤為重要。
上述內容就是如何簡單的寫yarn app,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。