Flink作业使用yarn.provided.lib.dirs参数指定依赖

yarn.provided.lib.dirs参数如官网所描述,它能够在提交作业时从你指定的HDFS目录中获取依赖,从而不必在每次本地提交作业时都将依赖也一同提交,我们使用下试试,首先将工程依赖包上传至HDFS目录/user/dev/flink-1.14.0-dependency,在提交时加上yarn.provided.lib.dirs参数并指定依赖包所在HDFS目录:

/opt/flink-1.14.0/bin/flink run-application \
-t yarn-application \
-c kl.Test01 \
-Dyarn.provided.lib.dirs="hdfs://klbigdata/user/dev/flink-1.14.0-dependency \
/home/ec2-user/FlinkSQLDemo/original-FlinkSQL-1.0.jar

提交报错:

The "yarn.provided.lib.dirs" has to also include the lib/, plugin/ and flink-dist jar. In other case, it cannot be used

这个错误说这个参数还要包含lib/、plugin/和flink-dist jar

我们需要做的就是将flink安装目录下的lib、plugins目录上传到HDFS,并在yarn.provided.lib.dirs参数上指定其路径,提交脚本修改后如下:

/opt/flink-1.14.0/bin/flink run-application \
-t yarn-application \
-c kl.Test01 \
-Dyarn.provided.lib.dirs="hdfs://klbigdata/user/dev/flink-1.14.0-dependency;hdfs://klbigdata/user/dev/flink-1.14.0-dependency/lib;hdfs://klbigdata/user/dev/flink-1.14.0-dependency/plugins" \
/home/ec2-user/FlinkSQLDemo/original-FlinkSQL-1.0.jar

提交正常。

<think>好的,我现在要解决用户在YARN上配置Flink并提交WordCount.jar作业的问题。首先,我需要回忆FlinkYARN上的部署模式,主要有三种:Session、Per-Job和Application模式。用户提到的示例中引用了Application模式,所以可能需要重点讲解这种模式。 接下来,用户需要配置Flink on YARN的步骤。根据引用[3]的内容,配置参数如并行度、内存等可以通过-D参数指定,替代旧有的命令行参数,比如-p。同时,文档提到了使用yarn.provided.lib.dirs来优化应用提交,这需要将Flink依赖预先上传到HDFS,避免每次提交重复传输,减少资源消耗。 然后是提交作业的命令。用户提供的示例中,引用[1]展示了使用run-application命令提交,引用[3]则给出了具体的参数配置,如设置并行度、内存、应用名称等。同时,WordCount.jar的路径和输出路径也需要正确指定。 另外,用户提供的WordCount示例代码来自引用[2],需要注意并行度的设置。例如,Source的并行度为1,执行环境并行度设为6,这可能影响任务在集群上的分布。需要提醒用户根据实际需求调整这些参数。 还需要检查是否有遗漏的配置步骤,比如Hadoop配置文件的集成,确保Flink能够正确访问YARN资源。此外,可能需要指导用户如何验证配置是否成功,例如查看YARN的Web UI确认应用状态。 最后,生成相关问题时要围绕配置优化、不同模式的区别、参数设置以及日志排查等方面,帮助用户扩展理解。</think>### Flink on YARN 配置与 WordCount 作业提交指南 --- #### **1. 环境准备** - **前置条件**: - 已部署 Hadoop/YARN 集群,且环境变量 `HADOOP_CONF_DIR` 或 `HADOOP_HOME` 已正确配置。 - 下载与 Hadoop 版本兼容的 Flink 发行包(如 `flink-1.17.1-bin-scala_2.12.tgz`)。 --- #### **2. Flink on YARN 配置** **核心配置项**(修改 `conf/flink-conf.yaml`): ```yaml # 设置 TaskManager 内存(示例值) taskmanager.memory.process.size: 2048m # 设置 JobManager 内存 jobmanager.memory.process.size: 1024m # 每个 TaskManager 的 Slot 数(决定并行度上限) taskmanager.numberOfTaskSlots: 4 ``` **YARN 特定配置**(提交时动态指定更灵活): ```bash -Dyarn.application.name="MyFlinkJob" \ -Dyarn.provided.lib.dirs="hdfs:///flink/libs" # 预上传 Flink 依赖到 HDFS 以加速提交[^3] ``` --- #### **3. 提交 WordCount 作业(Application 模式)** **命令示例**: ```bash ./bin/flink run-application -t yarn-application \ -Dparallelism.default=6 \ # 全局默认并行度 -Dtaskmanager.memory.process.size=2048m \ -Dyarn.application.name="FlinkWordCount" \ ./examples/streaming/WordCount.jar \ --input hdfs:///input/text.txt \ # 输入文件路径 --output hdfs:///output/result # 输出目录路径[^2] ``` **关键参数解析**: - `-t yarn-application`:指定部署模式为 Application 模式[^1]。 - `-D` 参数:覆盖默认配置,优先级高于 `flink-conf.yaml`。 - `yarn.provided.lib.dirs`:若配置,需提前将 Flink 的 `lib/` 和 `plugins/` 目录上传至 HDFS。 --- #### **4. 验证作业状态** - **YARN Web UI**:访问 `http://<yarn-resourcemanager>:8088` 查看应用状态。 - **Flink Dashboard**:通过 YARN 应用详情页获取 Flink JobManager 的 Web UI 地址。 --- #### **5. 代码并行度控制(参考示例)** 如引用所示,代码中可单独设置算子并行度: ```java env.setParallelism(6); // 全局并行度 DataStream<String> text = env.readTextFile(inputPath).setParallelism(1); // Source 并行度=1 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头顶榴莲树

你的鼓励是我最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值