前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何简单写yarn app

如何简单写yarn app

作者头像
Spark学习技巧
发布2018-09-25 17:53:06
1.2K0
发布2018-09-25 17:53:06
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

尽管YARN自带的编程API已经得到了极大的简化,但从头开发一个YARN应用程序仍是一件非常困难的事情。在YARN上编写一个应用程序,你需要开发Client和ApplicationMaster两个模块,并了解涉及到的几个协议的若干API和参数列表,其中ApplicationMaster还要负责资源申请,任务调度、容错等,总之,整个过程非常复杂。

Apache Twill(http://twill.apache.org/index.html)这个项目则是为简化YARN上应用程序开发而成立的项目,该项目把与YARN相关的重复性的工作封装成库,使得用户可以专注于自己的应用程序逻辑。

下面代码示例是使用Apache Twill开发一个运行在YARN上的helloworld程序:

代码语言:javascript
复制
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类似的项目显得尤为重要。

转载自董的博客:http://dongxicheng.org/mapreduce-nextgen/apache-twill-for-yarn/

twill官方demo,可以参看:https://github.com/apache/twill/tree/master/twill-examples

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档