Flink on Yarn的两种运行方式

本文详细解析Flink on Yarn的两种运行方式:yarn-session.sh结合flink run提交任务,以及flink run myarn-cluster一次性完成资源开辟和任务提交。探讨了Flink在YARN上的分布情况,包括ResourceManager、NodeManager、AppMaster和Container的角色,以及如何通过Flink提升集群机器的利用率。同时,介绍了JobManager的高可用配置方法,确保集群在JobManager故障时能够快速恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flink on Yarn的两种运行方式

第一种【yarn-session.sh(开辟资源)+flink run(提交任务)】

•启动一个一直运行的flink集群

•./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 [-d]

•附着到一个已存在的flink yarn session

•./bin/yarn-session.sh -id application_1463870264508_0001

•执行任务

•./bin/flink run ./data/batch/WordCount.jar -input hdfs://hadoop00:9000/LICENSE -output hdfs://hadoop00:9000/wordcount-result.txt

•停止任务 【web界面或者命令行执行cancel命令】

第二种【flink run -m yarn-cluster(开辟资源+提交任务)】

•启动集群,执行任务

•./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ./data/batch/WordCount.jar

注意:client端必须要设置YARN_CONF_DIR或者HADOOP_CONF_DIR或者HADOOP_HOME环境变量,通过这个环境变量来读取YARN和HDFS的配置信息,否则启动会失败

./bin/yarn-session.sh 命令分析

用法: 

   必选 

     -n,--container <arg>   分配多少个yarn容器 (=taskmanager的数量) 

   可选 

     -D <arg>                        动态属性 

     -d,--detached                   独立运行 

     -jm,--jobManagerMemory <arg>    JobManager的内存 [in MB] 

     -nm,--name                     在YARN上为一个自定义的应用设置一个名字 

     -q,--query                      显示yarn中可用的资源 (内存, cpu核数) 

     -qu,--queue <arg>               指定YARN队列. 

     -s,--slots <arg>                每个TaskManager使用的slots数量 

     -tm,--taskManagerMemory <arg>   每个TaskManager的内存 [in MB] 

     -z,--zookeeperNamespace <arg>   针对HA模式在zookeeper上创建NameSpace

     -id,--applicationId <yarnAppId>        YARN集群上的任务id,附着到一个后台运行的yarn session中

./bin/flink run 命令分析

run [OPTIONS] <jar-file> <arguments> 

• "run" 操作参数: 

•-c,--class <classname>  如果没有在jar包中指定入口类,则需要在这里通过这个参数指定 

•-m,--jobmanager <host:port>  指定需要连接的jobmanager(主节点)地址,使用这个参数可以指定一个不同于配置文件中的jobmanager 

•-p,--parallelism <parallelism>   指定程序的并行度。可以覆盖配置文件中的默认值。

默认查找当前yarn集群中已有的yarn-session信息中的jobmanager【/tmp/.yarn-properties-root】:

•./bin/flink run ./data/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1

连接指定host和port的jobmanager:

•./bin/flink run -m hadoop00:1234 ./data/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1

启动一个新的yarn-session:

•./bin/flink run -m yarn-cluster -yn 2 ./data/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 ./data/batch/WordCount.jar

Flink 在yarn上的分布

Flink on Yarn

•ResourceManager

•NodeManager

•AppMater(jobmanager和它运行在一个Container中)

•Container(taskmanager运行在上面)

使用on-yarn的好处

•提高集群机器的利用率

•一套集群,可以执行MR任务,spark任务,flink任务等...

JobManager 高可用(HA)

1、说明

jobManager协调每个flink任务部署。它负责任务调度和资源管理。默认情况下,每个flink集群只有一个JobManager,这将导致一个单点故障(SPOF):如果JobManager挂了,则不能提交新的任务,并且运行中的程序也会失败。使用JobManager HA,集群可以从JobManager故障中恢复,从而避免SPOF(单点故障) 。 用户可以在standalone或 YARN集群 模式下,配置集群高可用

2、配置步骤

Standalone集群的高可用

•Standalone模式(独立模式)下JobManager的高可用性的基本思想是,任何时候都有一个 Master JobManager ,并且多个Standby JobManagers 。 Standby JobManagers可以在Master JobManager 挂掉的情况下接管集群成为Master JobManager。 这样保证了没有单点故障,一旦某一个Standby JobManager接管集群,程序就可以继续运行。 Standby JobManager和Master JobManager实例之间没有明确区别。 每个JobManager都可以成为Master或Standby节点

Yarn 集群高可用

•flink on yarn的HA 其实主要是利用yarn自己的job恢复机制

HA机制详细配置步骤见下篇博客

<think>嗯,用户想了解如何在YARN上部署Flink,也就是Flink on YARN的部署教程。我需要根据提供的引用内容,整理出一个清晰的步骤指南。首先,我应该先确认用户的需求是什么。他们可能是一个刚开始接触Flink的大数据工程师,或者是想要将现有的Flink任务迁移到YARN运行。用户可能对YARNFlink的基本概念有一定了解,但需要具体的部署步骤和配置说明。 接下来,我需要查看用户提供的引用内容。引用[1]提到准备工作,比如Hadoop集群、环境变量和依赖包。引用[2]和[3]讨论了Session-Cluster模式,包括如何启动yarn-session和提交任务。引用[4]提到了Application模式,使用run-application命令。引用[5]则涉及Hadoop依赖包的处理,需要用户自己下载并放置到lib目录下。 用户的问题是如何在YARN上部署Flink,所以需要覆盖两种主要的部署模式:Session-Cluster和Application Mode。同时,必须确保每个步骤都正确,特别是关于依赖项和配置的部分。可能需要注意的常见问题包括依赖包缺失、Hadoop配置不正确,或者资源分配的问题。 首先,我应该列出部署前的准备工作,如安装Hadoop、配置环境变量、处理Hadoop依赖。然后分别讲解两种部署模式的具体步骤,包括启动集群和提交任务。可能还需要给出示例命令,这样用户可以直接复制使用。此外,需要注意不同模式下资源管理的区别,比如Session-Cluster是常驻的,而Application Mode是任务级别的。 在引用内容中,引用[5]提到需要用户自行下载Hadoop依赖包,并放到Flink的lib目录下。这一点很重要,否则可能会遇到类找不到的错误。需要详细说明这一步,包括下载地址的位置,可能用户需要访问提供的链接或文档来获取正确的依赖包。 另外,提交任务的命令有所不同,Session-Cluster使用flink run,而Application Mode使用flink run-application,并且需要指定Dyarn.provided.lib.dirs参数,引用HDFS上的Flink分发目录。这部分需要明确说明,避免用户混淆。 可能用户还会遇到资源不足的问题,所以在步骤中可以提醒调整资源参数,比如内存和slot数量。同时,需要检查YARN集群的状态,确保Hadoop服务正常运行,否则部署会失败。 最后,生成相关问题的时候,可以考虑用户可能进一步想知道如何优化部署、处理依赖冲突,或者监控Flink任务在YARN上的运行情况。这些问题有助于用户深入学习和解决问题。 现在需要将以上思路整理成一个结构化的回答,分步骤说明,确保每个部分都引用正确的来源,并在末尾添加相关问题。同时,要保持语言简洁,使用中文,符合用户的要求。</think>### Flink on YARN 部署教程 #### 一、部署前准备 1. **Hadoop集群环境** 确保已部署Hadoop集群(版本需与Flink兼容),并启动YARN服务。可通过`jps`命令检查`ResourceManager`和`NodeManager`是否正常运行[^2]。 2. **Flink环境配置** - 下载与Hadoop兼容的Flink版本,并解压到指定目录。 - 配置环境变量: ```bash export HADOOP_CLASSPATH=`hadoop classpath` # 确保Hadoop依赖正确加载[^5] ``` 3. **Hadoop依赖包处理** - 从Flink官网提供的地址下载与Hadoop版本对应的依赖包(如`flink-shaded-hadoop-3-uber.jar`)[^5]。 - 将依赖包复制到Flink的`lib`目录下,否则无法访问HDFS或YARN资源。 --- #### 二、两种部署模式详解 ##### 1. **Session-Cluster模式(常驻集群)** - **特点**:预先分配固定资源,任务共享集群,适合短时高频任务。 - **启动集群**: ```bash ./bin/yarn-session.sh -n 2 -s 2 -jm 1024 -tm 2048 -nm myFlinkSession ``` - `-n`:TaskManager数量 - `-s`:每个TaskManager的Slots数量 - `-nm`:YARN Application名称 - **提交任务**: ```bash flink run examples/streaming/TopSpeedWindowing.jar # 使用已启动的Session集群[^3] ``` ##### 2. **Application Mode(按需集群)** - **特点**:每个任务独立集群,资源按需分配,避免资源竞争[^4]。 - **提交任务**: ```bash ./bin/flink run-application -t yarn-application \ -Dyarn.provided.lib.dirs="hdfs:///flink/libs" \ hdfs:///jars/my-flink-job.jar ``` - `-Dyarn.provided.lib.dirs`:指定HDFS上的Flink依赖目录(需提前上传)[^4]。 --- #### 三、关键注意事项 1. **依赖包冲突** 若出现Hadoop类冲突,检查`lib`目录中是否仅保留**一个**Hadoop依赖包[^5]。 2. **资源参数调整** - 根据集群资源调整`-jm`(JobManager内存)、`-tm`(TaskManager内存)参数。 - 资源不足会导致YARN任务提交失败。 3. **日志查看** 任务日志可通过YARN Web UI(`http://<ResourceManager>:8088`)或`yarn logs -applicationId <appId>`查看。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值