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

如何简单写yarn app

作者头像
Spark学习技巧
发布于 2018-09-25 09:53:06
发布于 2018-09-25 09:53:06
1.3K00
代码可运行
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧
运行总次数:0
代码可运行

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
快速、安全、可靠!Yarn!| MTdata小讲堂
Yarn 的全称是 Yet Anther Resource Negotiator(另一种资源协商者)。它作为 Hadoop 的一个组件,官方对它的定义是一个工作调度和集群资源管理的框架。关于 Yarn 的发展历史我们在之前的文章曾介绍过,在这里就不赘述了。
美图数据技术团队
2018/09/18
5870
快速、安全、可靠!Yarn!| MTdata小讲堂
yarn详解
其中,在master node上运行ResourceManager。 每个datanode上运行一个NodeManager。 并把该dataNode上的所有计算资源(CPU、内存)视为一个/多个Container,而Container可以被分配执行一个task(ApplicationMaster、map task、reduce task等)。
平凡的学生族
2019/05/25
2.3K0
Hadoop中的YARN是什么?请解释其作用和架构。
YARN是Hadoop的一个重要组件,它是一个资源管理器和作业调度器,用于管理和调度集群中的计算资源。YARN的主要目标是提供一个通用的资源管理框架,使得Hadoop能够更好地支持各种计算模型和应用程序。
GeekLiHua
2025/01/21
1030
编写一个直接在Yarn上运行的程序
我们知道基于mapReduce框架的分布式程序的编写,在这种框架下我们不需要考虑申请资源,只需要安照mapreduce框架的要求,直接编写Map函数和reduce函数即可。如何在Yarn上直接编写应用程序呢?
Tim在路上
2020/08/04
1.5K0
深入理解 Taier:MR on Yarn 的实现原理
我们今天常说的大数据技术,它的理论基础来自于2003年 Google 发表的三篇论文,《The Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》、《Bigtable: A Distributed Storage System for Structured Data》。这三篇论文分别对应后来出现的 HDFS,MapReduce, HBase。
袋鼠云数栈
2023/03/15
5090
大数据Hadoop生态圈各个组件介绍(详情)
-coordination and management(协调与管理) -query(查询) -data piping(数据管道) -core hadoop(核心hadoop) -machine learning(机器学习) -nosql database(nosql数据库)
全栈程序员站长
2022/08/31
5.2K0
大数据Hadoop生态圈各个组件介绍(详情)
flink on yarn的一则jar冲突问题,你遇到过没?
近期准备对实时计算平台进行升级,调研阶段使用yarn client手动向yarn集群上提交flink任务时出现了一个小插曲。提交任务时,一直提示失败,来yarn的web控制台发现日志有报错信息,错误如下:
山行AI
2021/08/18
1.7K0
Slider简介
      来小米实习快两个月了,分配的一个大任务就是调研Slider,下面我简单的描述下Apache下的孵化项目Slider吧
jiewuyou
2022/09/29
5470
Slider简介
Hadoop 2.0中作业日志收集原理以及配置方法
Hadoop 2.0提供了跟1.0类似的作业日志收集组件,从一定程度上可认为直接重用了1.0的代码模块,考虑到YARN已经变为通用资源管理平台,因此,提供一个通用的日志收集模块势在必行,由于目前通用日志收集模块正在开发中(可参考“YARN-321”),本文仅介绍MRv2(MapReduce On YARN)自带的日志收集模块,包括工作原理以及配置方法。 在Hadoop 2.0中,每个作业日志包含两部分,作业运行日志和任务运行日志,作业运行由MRAppMaster(MapReduce作业的Applicat
小小科
2018/05/04
2K0
Hadoop 2.0中作业日志收集原理以及配置方法
你的每一次点击行为,是如何变成数据的?| 聊一聊互联网公司的内部数据采集
数据是怎么来的? 在很多行业,数据都是人工收集来的,比如医学疾病数据、环境数据、经济数据等。数据的更新周期也比较长,比如年度、月度。 但互联网行业不一样,这个天然的流量行业,数据量巨大,更新周期按天就算长了,通常有小时级、分钟级、实时秒级,甚至来不及落入表中,直接对实时流数据就进行计算。 最后说的这种「流式计算」,之前介绍过:什么是流式计算 | 另一个世界系列,对数据流实时进行计算,不需要存储到表里,主要为了满足一些实时级的需求,比如实时监控、实时个性化推荐等。 不管是「流式计算」还是存储到表里再计算
数说君
2018/04/08
1.7K0
你的每一次点击行为,是如何变成数据的?| 聊一聊互联网公司的内部数据采集
HADOOP生态圈简介
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143277.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
7970
HADOOP生态圈简介
Spark源码系列(七)Spark on yarn具体实现
本来不打算写的了,但是真的是闲来无事,整天看美剧也没啥意思。这一章打算讲一下Spark on yarn的实现,1.0.0里面已经是一个stable的版本了,可是1.0.1也出来了,离1.0.0发布才一个月的时间,更新太快了,节奏跟不上啊,这里仍旧是讲1.0.0的代码,所以各位朋友也不要再问我讲的是哪个版本,目前为止发布的文章都是基于1.0.0的代码。 在第一章《spark-submit提交作业过程》的时候,我们讲过Spark on yarn的在cluster模式下它的main class是org.apach
岑玉海
2018/02/28
1.7K0
【小白视角】大数据基础实践(五) MapReduce编程基础操作
ResourceManager • 处理客户端请求 • 启动/监控ApplicationMaster • 监控NodeManager • 资源分配与调度 NodeManager • 单个节点上的资源管理 • 处理来自ResourceManger的命令 • 处理来自ApplicationMaster的命令 ApplicationMaster • 为应用程序申请资源,并分配给内部任务 • 任务调度、监控与容错
全栈程序员站长
2022/06/28
6120
【小白视角】大数据基础实践(五) MapReduce编程基础操作
码云推荐 | 基于 Hadoop 的 Kafka On Yarn
该项目用于把 Kafka 运行在 Yarn 的辅助项目,项目依赖: kafka, kafka-offset-console. 见 kafka-yarn.properties 的配置 项目文件 kafka lib(kafka.zip): ./avro-1.7.7.jar ./avro-ipc-1.7.7.jar ./commons-cli-1.2.jar ./commons-collections-3.2.1.jar ./commons-configuration-1.6.jar ./commons-io-2
码云Gitee
2018/03/29
1.9K0
码云推荐 | 基于 Hadoop 的 Kafka On Yarn
Flink on Yarn和k8s
Session 模式和 Per Job 模式的应用场景不一样。Per Job 模式比较适合那种对启动时间不敏感,运行时间较长的任务。
awwewwbbb
2022/05/29
1.7K0
Flink on Yarn和k8s
YARN资源调度系统介绍
申请资源->启动ApplicationMaster->申请运行任务的container->分发Task->运行Task->Task结束->回收container->待所有container运行结束->回收ApplicationMaster->应用运行完成
醉独醒
2022/08/02
1.4K0
进击大数据系列(五):Hadoop 统一资源管理和调度平台 YARN
Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管理器系统,Yarn从hadoop 2引入,最初是为了改善MapReduce的实现,但是它具有通用性,同样执行其他分布式计算模式。
民工哥
2023/08/22
1.3K0
进击大数据系列(五):Hadoop 统一资源管理和调度平台 YARN
Hadoop-Yarn源码-服务库与事件库
本文分析Hadoop2.6源码,生命周期长的对象,Yarn采用基于服务的对象管理模型对其进行管理。
Dlimeng
2023/06/30
1670
【Hadoop研究】YARN:下一代 Hadoop计算平台
Apache Hadoop 是最流行的大数据处理工具之一。它多年来被许多公司成功部署在生产中。尽管 Hadoop 被视为可靠的、可扩展的、富有成本效益的解决方案,但大型开发人员社区仍在不断改进它。最终,2.0 版提供了多项革命性功能,其中包括 Yet Another Resource Negotiator (YARN)、HDFS Federation 和一个高度可用的 NameNode,它使得 Hadoop 集群更加高效、强大和可靠。在本文中,将对 YARN 与 Hadoop 中的分布式处理层的以前版本进行
陆勤_数据人网
2018/02/27
1.2K0
【Hadoop研究】YARN:下一代 Hadoop计算平台
如何编写一个YARN应用
在应用的提交流程中,是应用客户端将应用提交到 YARN ResourceManager。这可以通过设置YarnClient来完成。YarnClient启动后,客户端可以设置应用程序环境,准备好包含应用程序的第一个容器ApplicationMaster(AM),然后提交申请。您需要提供诸如应用程序运行所需的本地文件/jar 的详细信息、需要执行的实际命令(带有必要的命令行参数)、任何操作系统环境设置(可选)等信息等等。实际上,您需要描述需要为 ApplicationMaster 启动的 Unix 进程。
从大数据到人工智能
2023/02/13
1K0
相关推荐
快速、安全、可靠!Yarn!| MTdata小讲堂
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验