flink 中 stream sink 和 table sink 混用,如何只提交一个作业到yarn
时间: 2024-02-06 09:09:41 浏览: 118
在 Flink 中,Stream 和 Table 是两个不同的 API,它们使用不同的 sink 来将数据写入外部系统。如果您将 Stream Sink 和 Table Sink 混用,需要将它们分别封装到不同的 Flink 程序中,并分别提交到 YARN 上。
您可以使用 Flink 官方提供的 YARN Session Cluster 模式来提交多个 Flink 程序,这样您就可以将 Stream Sink 和 Table Sink 分别提交到 YARN 上。具体步骤如下:
1. 打包您的 Flink 应用程序,并将其上传到 HDFS 上。
2. 启动 YARN Session Cluster,使用以下命令:
```
./bin/yarn-session.sh -n <num_task_managers> -tm <task_manager_memory> -s <slots>
```
其中,`num_task_managers` 是您希望启动的 TaskManager 的数量,`task_manager_memory` 是每个 TaskManager 的内存大小,`slots` 是每个 TaskManager 能够提供的 slot 数量。
3. 提交第一个 Flink 程序,使用以下命令:
```
./bin/flink run -m yarn-cluster -yn <num_task_managers> -ys <yarn_job_manager_memory> -ytm <yarn_task_manager_memory> -c <your_main_class> <path_to_your_jar> <args>
```
其中,`num_task_managers` 是 TaskManager 的数量,`yarn_job_manager_memory` 是 JobManager 的内存大小,`yarn_task_manager_memory` 是每个 TaskManager 的内存大小,`your_main_class` 是您的应用程序的入口类,`path_to_your_jar` 是您的应用程序的 JAR 包路径,`args` 是应用程序的参数。
4. 提交第二个 Flink 程序,使用与第一个命令相同的方式。
这样,您就可以将 Stream Sink 和 Table Sink 分别提交到 YARN 上,而不会混淆它们。同时,您也可以随时停止和删除任何一个 Flink 程序,而不会影响其他程序的运行。
阅读全文