使用 Yarn Client 提交 Flink 任务获取任务
Apache Flink 是一个强大的数据处理引擎,广泛应用于流数据和批数据的处理。通过 Flink,我们能够以高性能、低延迟的方式处理海量数据。在实际生产环境中,使用 Yarn 作为资源管理器,可以方便地管理 Flink 集群并提交任务。本文将介绍如何使用 yarn client
模式提交 Flink 任务,并在部署后获取任务信息。
准备工作
在进行任务提交之前,您需要准备以下环境:
- 安装并配置好 Apache Flink。
- 确保 Hadoop Yarn 已经配置并正常运行。
- 编写一个简单的 Flink 程序。
示例 Flink 任务代码
以下是一个简单的 Flink 程序示例,它将读取文本输入,进行单词计数,并将结果输出到控制台。
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
public class WordCount {
public static void main(String[] args) throws Exception {
// 设置执行环境
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 从输入流中读取数据
DataStream<String> text = env.socketTextStream("localhost", 9999);
// 进行单词计数
DataStream<Tuple2<String, Integer>> counts = text
.flatMap(new Tokenizer())
.keyBy(value -> value.f0)
.sum(1);
// 打印输出结果
counts.print();
// 执行任务
env.execute("WordCount Example");
}
public static final class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
@Override
public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
// 将输入的每一行文本切分为单词
String[] words = value.toLowerCase().split("\\W+");
for (String word : words) {
if (word.length() > 0) {
out.collect(new Tuple2<>(word, 1));
}
}
}
}
}
提交任务
在编译完成 Flink 项目后,接下来就是将任务提交到 Yarn。我们使用如下命令:
flink run -m yarn-cluster -yjm 1024 -ytm 2048 ./path/to/your/WordCount.jar
-m yarn-cluster
指定任务管理器在 Yarn 集群模式下运行。-yjm 1024
指定 JobManager 的内存为 1024MB。-ytm 2048
指定 TaskManager 的内存为 2048MB。./path/to/your/WordCount.jar
是您编译后的 Flink 程序的 JAR 文件路径。
成功提交后,Flink 会在 Yarn 中启动相应的资源来运行提交的作业。
获取任务信息
在提交后,您可以通过 Flink 的 Web 界面监控任务执行情况。默认情况下,您可以通过访问 http://<your-fink-job-manager-host>:8081
打开 Flink Dashboard,这里可以看到当前所有正在执行的任务。
任务状态监控
Flink Dashboard 会直观地展示任务的状态,包括运行中、成功和失败的任务。下面是示例饼状图示意。
pie
title Flink 任务状态示例
"运行中": 50
"成功": 30
"失败": 20
通过饼图,我们可以清晰地看到不同状态的任务所占比例。
结论
通过 Yarn Client 提交 Flink 任务,不仅简化了任务的部署过程,还能有效利用集群资源。在实际应用中,您可以根据需求调整任务参数,确保高效的数据处理。同时,借助 Flink Dashboard,可以便捷地监控和管理正在运行的任务,提高工作效率。
希望本文对您在 Flink 和 Yarn 的使用上提供了一些帮助,如有疑问,欢迎在评论区交流讨论!