使用 Yarn Client 提交 Flink 任务获取任务

Apache Flink 是一个强大的数据处理引擎,广泛应用于流数据和批数据的处理。通过 Flink,我们能够以高性能、低延迟的方式处理海量数据。在实际生产环境中,使用 Yarn 作为资源管理器,可以方便地管理 Flink 集群并提交任务。本文将介绍如何使用 yarn client 模式提交 Flink 任务,并在部署后获取任务信息。

准备工作

在进行任务提交之前,您需要准备以下环境:

  1. 安装并配置好 Apache Flink。
  2. 确保 Hadoop Yarn 已经配置并正常运行。
  3. 编写一个简单的 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 的使用上提供了一些帮助,如有疑问,欢迎在评论区交流讨论!