flink on yarn 部署方案

FLINK ON YARN 3种部署方式:
在生产中建议使用 Per-job 或 Application Mode 模式部署 Flink 应用程序,这些模式为应用程序提供了更好的隔离.
一个任务启动一个Flink集群, 各个 Flink 集群之间独立运行, 互不影响, 而且每个集群可以单独进行配置。

1、Application Mode (应用模式)

特点

每次递交作业都需要申请一次资源

优点

  1. main 方法在集群中执行, 不是执行在客户端
  2. 运行时所需的依赖项, 并生成 JobGraph 都在Yarn集群中执行, 有效减少客户端带宽、性能的消耗, 从而防止客户端压力过大
  3. 允许应用程序包含多个Job, 多个Job顺序执行

使用

该模式将在 YARN 上启动 Flink 集群,其中应用程序 jar 的 main() 方法在 YARN 中的 JobManager 上执行, 应用程序完成后,集群将立即关闭。

常用的启动命令, 启动后会得到一个 applicatid

./bin/flink run-application
-t yarn-application
-yjm 1024
-ytm 1024
-d
-c org.apache.flink.streaming.examples.socket.SocketWindowWordCount
examples/streaming/SocketWindowWordCount.jar
–port 9000

列出运行在集群中的任务(通过 -Dyarn.application.id 可以查看指定 application.id 中执行的 Job)

./bin/flink list
-t yarn-application
-Dyarn.application.id=application_XXXX_YY

取消job

./bin/flink cancel
-t yarn-application
-Dyarn.application.id=application_XXXX_YY

优化 为了让整个应用得到更快的响应,我们可以把 jar 等文件上传到指定的 HDFS 路径,这样应用在执行的时候可以直接从指定的路径获取,而不是从 client 上传。

./bin/flink run-application -t yarn-application
-Dyarn.provided.lib.dirs=“hdfs://myhdfs/my-remote-flink-dist-dir”
hdfs://myhdfs/jars/my-application.jar

2、Per-Mode (Job 分离模式)

特点

每次递交作业都需要申请一次资源

优点

  1. 作业运行完成, 资源会立刻被释放, 不会一直占用系统资源
  2. 每个作业都是一个Flink集群, 不同资源之间做到了很好的资源隔离, 且不同的作业可以进行单独的配置

缺点

  1. 每次递交作业都需要申请资源, 会影响执行效率, 因为申请资源需要消耗时间
  2. main 方法在客户端执行, 在客户端提交给 JobManager

应用场景

适合作业比较少的场景、大作业的场景

启动命令

./bin/flink run
-t yarn-per-job
-yjm 1024
-ytm 1024
-d
-c org.apache.flink.streaming.examples.socket.SocketWindowWordCount
examples/streaming/SocketWindowWordCount.jar
–port 9000

3、Session Mode(会话模式)

特点

所有作业共享集群资源

优点

根据指定的资源参数初始化一个Flink集群,资源只需要一次申请

缺点

  1. 隔离性差, JM 负载瓶颈
  2. main 方法在客户端执行

应用场景

对延迟非常敏感但运行时长较短的作业

会话模式有两种操作模式

attached mode(默认)

yarn-session.sh 客户端将 Flink 集群提交给 YARN, 但客户端一直在运行, 不会退出
如果集群失败, 客户端将显示错误; 如果客户端被终止, 它也会发出集群关闭的信号

detached mode (-d or --detached)

yarn-session.sh 客户端将 Flink 集群提交给 YARN,然后客户端返回并退出
需要再次调用客户端或 YARN 工具来停止 Flink 集群

启动命令

./bin/yarn-session.sh
-yjm 1024
-ytm 1024
-d

<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>`查看。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值