如何简单写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类似的项目显得尤为重要。

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

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

原文发布于微信公众号 - Spark学习技巧(bigdatatip)

原文发表时间:2018-08-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏文渊之博

初识kafka

Kafka经常用于实时流数据架构,用于提供实时分析。本篇将会简单介绍kafka以及它为什么能够广泛应用。

23130
来自专栏杨建荣的学习笔记

datapump跨平台升级迁移的对比测试和优化 (r8笔记第81天)

目前计划对跨平台的数据库环境进行迁移,一来降低运维成本,二来更加可控。其实对于很多机器来说,如果机器跑了很多年,一直没有重启过,那么时间长了,一 个直...

375110
来自专栏即时通讯技术

知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路

知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供很多强大的功能。本文作...

70420
来自专栏杨建荣的学习笔记

10g和11g中的一些差别(r6笔记第98天)

最近有时候看官方文档,感觉11g里面已经有了很多的变化,无论是使用还是安装上的细节上,11g似乎总是能够带给我更多的惊喜。而从以往的使用情况中感 觉10g已经足...

35040
来自专栏服务端技术杂谈

快的打车架构实践

1.客户端与服务端通信会遇到哪些问题? 2.怎样基于Storm和HBase打造实时监控平台? 3.怎样对Web系统进行分布式改造? 快的打车从2013年年底到2...

39040
来自专栏hadoop学习笔记

大快DKH大数据基础数据平台的监控参数说明

2018年国内大数据公司50强榜单排名已经公布了出来,大快以黑马之姿闯入50强,并摘得多项桂冠。Hanlp自然语言处理技术也荣膺了“2018中国数据星技术”奖。...

13820
来自专栏cloudskyme

hbase实战——(1.1 nosql介绍)

什么是nosql NoSQL(NoSQL = Not Only SQL),意思是不仅仅是SQL的扩展,一般指的是非关系型的数据库。 随着互联网web2.0网站的...

40480
来自专栏xingoo, 一个梦想做发明家的程序员

[大数据之Yarn]——资源调度浅学

在hadoop生态越来越完善的背景下,集群多用户租用的场景变得越来越普遍,多用户任务下的资源调度就显得十分关键了。比如,一个公司拥有一个几十个节点的hadoo...

19650
来自专栏杂文共赏

使用Hadoop处理大数据

大数据现在意味着大利润。世界正在不断积累大量的原始数据,如文本,MP3或Jpeg图片文件,可以通过分析这些数据得到利益。Apache Hadoop是处理大数据的...

471100
来自专栏人人都是极客

聊聊Linux IO(下)

广义上Cache的同步方式有两种,即Write Through(写穿)和Write back(写回). 从名字上就能看出这两种方式都是从写操作的不同处理方式引出...

46010

扫码关注云+社区

领取腾讯云代金券