本文为您介绍如何在E-MapReduce上提交Flink作业以及查看作业。
背景信息
Dataflow集群中的Flink服务是以YARN模式部署的,您可以通过SSH方式登录Dataflow集群,在命令行中进行Flink作业提交。
基于YARN模式部署的Dataflow集群支持以Session模式、Per-Job Cluster模式和Application模式提交Flink作业。
模式 | 描述 | 特点 |
Session模式 | Session模式会根据您设置的资源参数创建一个Flink集群,所有作业都将被提交到这个集群上运行。该集群在作业运行结束之后不会自动释放。 例如,某个作业发生异常,导致一个Task Manager关闭,则其他所有运行在该Task Manager上的作业都会失败。另外由于同一个集群中只有一个Job Manager,随着作业数量的增多,Job Manager的压力会相应增加。 |
根据以上特点,该模式适合部署需要较短启动时间且运行时间相对较短的作业。 |
Per-Job Cluster模式 | 当使用Per-Job Cluster模式时,每次提交一个Flink作业,YARN都会为这个作业新启动一个Flink集群,然后运行该作业。当作业运行结束或者被取消时,该作业所属的Flink集群也会被释放。 |
根据以上特点,该模式通常适合运行时间较长的作业。 |
Application模式 | 当使用Application模式时,每次提交一个Flink Application(一个Application包含一个或多个作业),YARN都会为这个Application新启动一个Flink集群。当Application运行结束或者被取消时,该Application所属的Flink集群也会被释放。 该模式与Per-Job模式不同的是,Application对应的JAR包中的 如果提交的JAR包中包含多个作业,则这些作业都会在该Application所属的集群中执行。 |
|
前提条件
已创建Flink模式的Dataflow集群,详情请参见创建集群。
提交并查看Flink作业
本文使用Flink自身提供的TopSpeedWindowing示例进行介绍,该示例是一个会长时间运行的流作业。
您可以根据需求,选择以下三种模式提交并查看作业:
Session模式
通过SSH方式连接集群的Master节点,具体操作请参见登录集群Master节点。
执行以下命令,启动YARN Session。
yarn-session.sh --detached
执行成功后,系统会返回Application ID。例如,
application_1750137174986_0001
,后续将使用<application_XXXX_YY>
表示。执行以下命令,提交作业。
flink run --detached /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar
提交成功后,系统会返回如下类似信息。
其中
3785db18d371326758d7843dd2a1****
为该作业ID,后续将使用<jobId>
表示。执行以下命令,查看作业状态。
flink list -t yarn-session -Dyarn.application.id=<application_XXXX_YY>
返回如下类似信息。
------------------ Running/Restarting Jobs ------------------- 16.06.2025 18:20:55 : 3785db18d371326758d7843dd2a1**** : CarTopSpeedWindowingExample (RUNNING)
您也可以通过Web UI的方式查看作业状态,详情请参见通过Web UI查看作业状态。
执行以下命令,停止作业。
flink cancel -t yarn-session -Dyarn.application.id=<application_XXXX_YY> <jobId>
Per-Job Cluster模式
通过SSH方式连接集群的Master节点,具体操作请参见登录集群Master节点。
执行以下命令,提交作业。
flink run -t yarn-per-job --detached /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar
提交成功后,系统会返回如下类似信息。
其中
application_1750125819948_****
为Application ID,后续将使用<application_XXXX_YY>
表示;f5f980ac631192b02548235f1bbe****
为该作业ID,后续将使用<jobId>
表示。您可以执行以下命令,查看作业状态。
flink list -t yarn-per-job -Dyarn.application.id=<application_XXXX_YY>
您也可以通过Web UI的方式查看作业状态,详情请参见通过Web UI查看作业状态。
执行以下命令,停止作业。
flink cancel -t yarn-per-job -Dyarn.application.id=<application_XXXX_YY> <jobId>
Application模式
通过SSH方式连接集群的Master节点,具体操作请参见登录集群Master节点。
执行以下命令,提交作业。
flink run-application -t yarn-application /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar
提交成功后,系统会返回如下类似信息。
其中,
application_1750125819948_0004
为已提交的Flink作业的YARN Application ID,后续将使用<application_XXXX_YY>
表示。执行以下命令,查看作业状态。
flink list -t yarn-application -Dyarn.application.id=<application_XXXX_YY>
返回如下类似信息,其中
4db32b5339e6d64de2a1096c4762****
为该作业的<jobId>
。------------------ Running/Restarting Jobs ------------------- 16.06.2025 18:20:55 : 4db32b5339e6d64de2a1096c4762**** : CarTopSpeedWindowingExample (RUNNING)
您也可以通过Web UI的方式查看作业状态,详情请参见通过Web UI查看作业状态。
执行以下命令,停止作业。
flink cancel -t yarn-application -Dyarn.application.id=<application_XXXX_YY> <jobId>
指定作业配置
Flink提供三种指定作业配置的方式:
方式一:在作业代码中,指定配置项的值,详情请查看Flink配置。
方式二:使用
flink run
命令提交作业时,通过-D指定配置项的值,例如flink run-application -t yarn-application -D state.backend=rocksdb...
。方式三:在
/etc/taihao-apps/flink-conf/flink-conf.yaml
配置文件中指定配置项的值。
如果没有通过这三种方式指定,则使用默认值,配置参数详情请参见Apache Flink官网。
通过Web UI查看作业状态
访问Web UI。
在左侧导航栏,选择EMR on ECS。
在顶部菜单栏处,根据实际情况选择地域和资源组。
在EMR on ECS页面,单击目标集群的集群ID。
单击上方的访问链接与端口页签。
在访问链接与端口页面,单击YARN UI所在行的链接。
访问Web UI的详细信息,请参见通过控制台访问开源组件Web界面。
单击Application ID。
单击Tracking URL的链接。
进入Apache Flink Dashboard页面,即可查看作业的状态。
相关文档
Flink on YARN的更多信息,请参见Apache Hadoop YARN。