如何在 Flink 上提交 YARN 集群任务
Apache Flink 是一种流处理和批处理的数据处理引擎,而 YARN(Yet Another Resource Negotiator)是 Hadoop 的资源管理器。将 Flink 应用程序部署在 YARN 集群中,可以有效利用分布式计算资源。本文将带你一步一步了解如何在 Flink 环境中提交 YARN 集群任务。
提交流程概览
提交 Flink 任务到 YARN 集群的流程如下表所示:
步骤 | 行动 |
---|---|
1 | 准备 Flink 应用程序 |
2 | 打包应用程序到 JAR 文件 |
3 | 上传 Flink 配置和 JAR 文件到 YARN 集群 |
4 | 使用 Flink 命令行工具提交任务 |
5 | 监控和管理任务执行 |
步骤详解
第一步:准备 Flink 应用程序
首先,你需要编写一个 Flink 应用程序。这通常由一个 main
类和一些数据处理逻辑组成。以下是一个简单的 FlinkExample.java
文件示例:
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.DataSet;
public class FlinkExample {
public static void main(String[] args) throws Exception {
// 创建一个执行环境
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
// 创建一个数据集(例如,用于图书数据)
DataSet<String> dataSet = env.fromElements("Hello", "Flink", "on", "YARN");
// 对数据集执行一个简单的映射操作
DataSet<String> result = dataSet.map(new MapFunction<String, String>() {
@Override
public String map(String value) throws Exception {
return value.toUpperCase(); // 将每个单词转换为大写
}
});
// 启动执行
result.print();
}
}
第二步:打包应用程序到 JAR 文件
将代码打包为 JAR 文件。你可以使用 Maven 或 Gradle,这是两种最常用的 Java 构建工具。例如,如果你使用 Maven,可以运行以下命令:
mvn clean package
这会在 target
目录下生成一个 JAR 文件,文件名通常以项目名称和版本号为命名。
第三步:上传 Flink 配置和 JAR 文件到 YARN 集群
在提交到 YARN 之前,确保已经安装并配置好 Flink 和 YARN。如果你的 YARN 集群正在运行,接下来就需要将应用程序 JAR 文件上传到 YARN 的 HDFS(Hadoop Distributed File System)中:
hadoop fs -put target/my-flink-example-1.0-SNAPSHOT.jar hdfs:///user/myusername/
这条命令将你的 JAR 文件上传到 HDFS 的指定路径。
第四步:使用 Flink 命令行工具提交任务
你可以使用 Flink 的 bin/flink
命令工具来提交作业。确保你的 FLINK_HOME
变量指向你的 Flink 安装路径。下面是提交命令的示例:
$FLINK_HOME/bin/flink run -m yarn-cluster hdfs:///user/myusername/my-flink-example-1.0-SNAPSHOT.jar
解释如下:
-m yarn-cluster
表明在 YARN 集群上运行。hdfs:///user/myusername/my-flink-example-1.0-SNAPSHOT.jar
是你已经上传到 HDFS 的 JAR 文件路径。
如果你想在 yarn-session
模式下提交任务,可以替换成:
$FLINK_HOME/bin/flink run -m yarn-session -c FlinkExample hdfs:///user/myusername/my-flink-example-1.0-SNAPSHOT.jar
-c FlinkExample
表示指定入口类。
第五步:监控和管理任务执行
任务提交成功后,Flink 提供了一个 Web UI,通常可以在 http://<your-yarn-master-ip>:8081
上访问。在这里,你可以监控作业的执行情况、查看日志等。
总结
以上就是如何将 Flink 应用程序提交到 YARN 集群的完整流程。从编写应用程序,打包 JAR 文件,到最终提交并监控任务。现在你可以尝试运行自己的 Flink 程序,并享受流式数据处理带来的乐趣。
希望这篇文章能帮助你快速上手 Flink 和 YARN 集群的任务提交。如果在过程中有任何疑问,随时可以查阅 Flink 和 YARN 的官方文档,这里提供了丰富的资源和示例供你参考。