Flink on Yarn的两种模式及HA
转自:https://blog.csdn.net/a_drjiaoda/article/details/88203323
Flink on Yarn模式部署始末:Flink的Standalone和on Yarn模式都属于集群运行模式,但是有很大的不同,在实际环境中,使用Flink on Yarn模式者居多。那么使用on yarn模式到底好在哪呢?首先,在集群运行时,可能会有很多的集群实例包括MapReduce、Spark、Flink等等,那么如果它们全基于on Yarn就可以完成资源分配,减少单个实例集群的维护,提高集群的利用率。
Flink on Yarn模式安装部署要做的其实不多,正常的步骤:1、上传二进制包 ===》2、解压缩 ===》 3、更改文件名称 ===》 4、配置环境变量。首先看下面这张图(来自于徐葳大神),Flink on yarn的job运行模式大致分为两类:
内存集中管理模式:在Yarn中初始化一个Flink集群,开辟指定的资源,之后我们提交的Flink Jon都在这个Flink yarn-session中,也就是说不管提交多少个job,这些job都会共用开始时在yarn中申请的资源。这个Flink集群会常驻在Yarn集群中,除非手动停止。
内存Job管理模式【推荐使用】:在Yarn中,每次提交job都会创建一个新的Flink集群,任务之间相互独立,互不影响并且方便管理。任务执行完成之后创建的集群也会消失。
一、内存集中管理模式
第一种模式分为两步:yarn-session.sh(开辟资源)+flink run(提交任务)
1、开源资源,使用命令
yarn-session.sh -n 2 -jm 1024 -tm 1024 -d
参数解释:
//-n 2 表示指定两个容器
// -jm 1024 表示jobmanager 1024M内存
// -tm 1024表示taskmanager 1024M内存
//-d 任务后台运行
//-nm,--name YARN上为一个自定义的应用设置一个名字
//-q,--query 显示yarn中可用的资源 (内存, cpu核数)
//-z,--zookeeperNamespace <arg> 针对HA模式在zookeeper上创建NameSpace
//-id,--applicationId <yarnAppId> YARN集群上的任务id,附着到一个后台运行的yarn session中
由于flink on yarn 模式 是基于hadoop的,如果hadoop 集群没启动,则会连接失败。
当启动之后,又会出现NameNode处于安全模式,这里没有必要手动关闭。解决方法:等hadoop启动之后差不多20s再提交yarn-session的命令。正常运行后如下图所示,并访问JM的web 接口,这里有个麻烦的事情就是每次需要去看主机名和端口号。
其实,由于这还是属于一个Yarn application,因此我们也可以通过yarn.resourcemanager.webapp.address端口来选择访问哪一个flink集群,例如我这里刚刚启动了两个Flink集群,这里可通过Tracking UI的值来跳转到对用的Flink集群监控页面。
关闭某个Flink集群:上述图中大家可以看到有两个Flink集群,这是由于误操作直接按了ctrl+c键,导致前台程序退出,但是真正的Flink集群依然在后台健壮的运行着,为了演示方便,这里又通过上述的命令开启了新的flink yarn-session。现在需要关闭一个,其实也很简单,因为是yarn程序,我们可以直接使用 yarn application -kill application_1552292557465_0001 来结束进程。
2、提交任务
为了进行测试,我们对Flink目录下的LICENSE文件进行词频统计
上传文件至HDFS。hadoop fs -put LICENSE /
查看文件是否上传成功。hadoop fs -ls /
执行命令。./flink run ../examples/batch/WordCount.jar -input hdfs://192.168.83.129:9000/LICENSE -output hdfs://192.168.83.129:9000/wordcount-result.txt
查看输出结果。hadoop fs -cat /wordcount-result.txt
二、内存Job管理模式
第二种模式其实也分为两个部分,依然是开辟资源和提交任务,但是在Job模式下,这两步都合成一个命令了。
这里,我们直接执行命令./flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ../examples/batch/WordCount.jar。上面的命令中没有指定-input 和 -output,这是由于有默认的数据集和输出方式,看看效果。
上述方框中内容就是默认的数据集,以及将输出打印到控制台上。下面yarn application的图可以清晰的反映第二种方式,在job结束后就会关闭flink yarn-session的集群。
第二种方式命令 参数解释:
flink run [OPTIONS] <jar-file> <arguments>
• "run" 操作参数:
// -c,--class <classname> 如果没有在jar包中指定入口类,则需要在这里通过这个参数指定
// -m,--jobmanager <host:port> 指定需要连接的jobmanager(主节点)地址,使用这个参数可以指定一个不同于配置文件中的jobmanager
// -p,--parallelism <parallelism> 指定程序的并行度。可以覆盖配置文件中的默认值。
三、两种模式区分
//第一种模式,会去找已有的Flink集群
默认查找当前yarn集群中已有的yarn-session信息中的jobmanager【/tmp/.yarn-properties-root】:
• ./bin/flink run ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
//第一种模式,给flink指定一个已有的JM,不让他自己去找
连接指定host和port的jobmanager:
• ./bin/flink run -m master:1234 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
//第二种模式,指定为 yarn-cluster
启动一个新的yarn-session:
• ./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
注意:yarn session命令行的选项也可以使用./bin/flink 工具获得。它们都有一个y或者yarn的前缀
例如:./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar
Flink on Yarn的两种模式及HA的更多相关文章
- Spark On Yarn的两种模式yarn-cluster和yarn-client深度剖析
Spark On Yarn的优势 每个Spark executor作为一个YARN容器(container)运行.Spark可以使得多个Tasks在同一个容器(container)里面运行 1. Sp ...
- Spark on yarn的两种模式 yarn-cluster 和 yarn-client
从深层次的含义讲,yarn-cluster和yarn-client模式的区别其实就是Application Master进程的区别,yarn-cluster模式下,driver运行在AM(Applic ...
- Spark on YARN的两种运行模式
Spark on YARN有两种运行模式,如下 1.yarn-cluster:适合于生产环境. Spark的Driver运行在ApplicationMaster中,它负责向YARN Re ...
- Spark剖析-宽依赖与窄依赖、基于yarn的两种提交模式、sparkcontext原理剖析
Spark剖析-宽依赖与窄依赖.基于yarn的两种提交模式.sparkcontext原理剖析 一.宽依赖与窄依赖 二.基于yarn的两种提交模式深度剖析 2.1 Standalne-client 2. ...
- Spark中的两种模式
两种模式 client-了解 cluster模式-开发使用 操作 1.需要Yarn集群 2.历史服务器 3.提交任务的的客户端工具-spark-submit命令 4.待提交的spark任务/程序的字节 ...
- Windows2003 IIS6.0支持32位和64位两种模式的设置方法
IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...
- 【转】Reactor与Proactor两种模式区别
转自:http://www.cnblogs.com/cbscan/articles/2107494.html 两种IO多路复用方案:Reactor and Proactor 一般情况下,I/O 复用机 ...
- ACE_linux:Reactor与Proactor两种模式的区别
一.概念: Reactor与Proactor两种模式的区别.这里我们只关注read操作,因为write操作也是差不多的.下面是Reactor的做法: 某个事件处理器宣称它对某个socket上的读事件很 ...
- JSP中两种模式的总结
运用JSP/Servlet实现的Web动态交互,主要采用: 模式一:JSP+JavaBean 链接:http://wxmimperio.coding.io/?p=155 模式二;JSP+Servlet ...
随机推荐
- VSCode+C++环境搭建
date: 2019-10-05 VSCode+C++环境搭建 其实并不完整,毕竟我也只是一个OIer,并不会很高深的东西.(众所周知,OIer主业是软件开发) 安装VSCode 下载安装包 这个很简 ...
- web安全技术--XSS和CSRF
Xss一般是脚本代码,主要是JS的,但是也有AS和VBS的. 主要分为反射型,存储型,DOM型三个大类. 一般来讲在手工测试的时候先要考虑的地方就是哪里有输入那里有输出. 然后是进行敏感字符测试,通常 ...
- idea 出现Can't load AMD 64-bit .dll on a IA 32-bit platform错误
这个错误是在说无法在IA 32位平台上加载AMD 64位.dll,解决方法如下 下载安装64位的jdk(方法和安装32位的一致,可百度查阅相关资料) 按如下步骤配置
- str函数之不同变量之间如何连接,外加浮点运算注意事项
最近看书了解到不同字符串之间可以用“+”号来连接,遂思考如何将不同变量连接起来,思考试验并上网查询后得出了结果,在此将所学分享给在阅读的各位. 数据类型的转换 常识可知,在python中,不同的数 ...
- 隐藏Nginx软件版本号信息
为了提高我们web服务器的安全性,我们应当尽可能的隐藏服务器的信息以防止他人通过这些信息找到漏洞侵入我们的服务器,对于Nginx而言,我们安装好Nginx后最好隐藏Nginx的版本号,以防止通过该版本 ...
- 10分钟彻底理解Redis的持久化机制:RDB和AOF
作者:张君鸿 juejin.im/post/5d09a9ff51882577eb133aa9 什么是Redis持久化? Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客 ...
- Java SSM 商户管理系统 客户管理 库存管理 销售报表 项目源码
需求分析: 有个厂家,下面有很多代理商(商户或门头等),之前商户进货.库存.销售.客户资料等记录在excel表格中 或者无记录,管理比较混乱,盈利情况不明.不能有效了解店铺经营情况和客户跟踪记录 厂家 ...
- 使用Navicat Premium 比较PostgreSql数据库 dev环境与test环境差异
Navicat Premium 功能很强大,支持不同数据库客户端的连接,并且使用工具可以生成两个库差异的sql脚本,方便dev与test环境表结构同步,具体操作方法如下 单击运行,实现两个库中模式表结 ...
- JS基础语法----Math对象
推荐查看MDN----在线的帮助文档 实例对象: 通过构造函数创建出来,实例化的对象 静态对象: 不需要创建,直接就是一个对象,方法(静态方法)直接通过这个对象名字调用 实例方法必须通过实例对 ...
- 利用QQ获取ip
首先启动任务管理器,选择性能选型,点击打开资源管理器 点击网络,找到qq.exe 点击下面的TCP链接 最好让你的qq好友发一个离线文件,在接收的时候注意远程连接,即使您所要的你好友的ip地址