Apache Twill(官方首页:Apache Twill)这个项目则是为简化YARN上应用程序开发而成立的项目,该项目把与YARN相关的重复性的工作封装成库,使得用户可以专注于自己的应用程序逻辑。
下面代码示例是使用Apache Twill开发一个运行在YARN上的helloworld程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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/
作者:Dong,作者介绍:http://dongxicheng.org/about/
本博客的文章集合:http://dongxicheng.org/recommend/