基础使用

本文为您介绍如何在E-MapReduce上提交Flink作业以及查看作业。

背景信息

Dataflow集群中的Flink服务是以YARN模式部署的,您可以通过SSH方式登录Dataflow集群,在命令行中进行Flink作业提交。

基于YARN模式部署的Dataflow集群支持以Session模式、Per-Job Cluster模式和Application模式提交Flink作业。

模式描述特点
Session模式Seesion模式会根据您设置的资源参数创建一个Flink集群,所有作业都将被提交到这个集群上运行。该集群在作业运行结束之后不会自动释放。

例如,某个作业发生异常,导致一个Task Manager关闭,则其他所有运行在该Task Manager上的作业都会失败。另外由于同一个集群中只有一个Job Manager,随着作业数量的增多,Job Manager的压力会相应增加。

  • 优点:提交作业时,资源分配导致的时间开销相比其他模式较小。
  • 缺点:由于所有作业都运行在该集群中,会存在对资源的竞争以及作业间的相互影响。

根据以上特点,该模式适合部署需要较短启动时间且运行时间相对较短的作业。

Per-Job Cluster模式当使用Per-Job Cluster模式时,每次提交一个Flink作业,YARN都会为这个作业新启动一个Flink集群,然后运行该作业。当作业运行结束或者被取消时,该作业所属的Flink集群也会被释放。
  • 优点:作业之间资源隔离,一个作业的异常行为不会影响到其他作业。

    因为每个作业都和一个Job Manager一一对应,因此不会出现一个Job Manager因为运行多个Job而导致负载过高的问题。

  • 缺点:每次运行一个作业都要启动一个专属Flink集群,启动作业的开销更大。

根据以上特点,该模式通常适合运行时间较长的作业。

Application模式当使用Application模式时,每次提交一个Flink Application(一个Application包含一个或多个作业),YARN都会为这个Application新启动一个Flink集群。当Application运行结束或者被取消时,该Application所属的Flink集群也会被释放。

该模式与Per-Job模式不同的是,Application对应的JAR包中的main()方法会在集群中的Job Manager中被执行。

如果提交的JAR包中包含多个作业,则这些作业都会在该Application所属的集群中执行。

  • 优点:可以减轻客户端提交作业时的负担。
  • 缺点:每次运行一个Flink Application都要启动一个专属Flink集群,启动Application的时间开销会更大。

前提条件

已创建Flink模式的Dataflow集群,详情请参见创建集群

提交并查看Flink作业

您可以根据需求,选择以下三种模式提交并查看作业:

Session模式

  1. 通过SSH方式连接集群,详情请参见登录集群

  2. 执行以下命令,启动YARN Session。

    yarn-session.sh --detached
  3. 执行以下命令,提交作业。

    flink run /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar
    说明

    本文使用Flink自身提供的TopSpeedWindowing示例进行介绍,该示例是一个会长时间运行的流作业。

    提交成功后,会返回已提交的Flink作业的YARN Application ID。返回如下类似信息。Session

  4. 执行以下命令,查看作业状态。

    flink list -t yarn-session -Dyarn.application.id=<application_XXXX_YY>

    您也可以通过Web UI的方式查看作业状态,详情请参见通过Web UI查看作业状态

  5. 执行以下命令,停止作业。

    flink cancel -t yarn-session -Dyarn.application.id=<application_XXXX_YY> <jobId>

Per-Job Cluster模式

  1. 通过SSH方式连接集群,详情请参见登录集群

  2. 执行以下命令,提交作业。

    flink run -t yarn-per-job --detached /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar

    提交成功后,会返回已提交的Flink作业的YARN Application ID。返回如下类似信息。Per-Job Cluster

  3. 您可以执行以下命令,查看作业状态。

    flink list -t yarn-per-job -Dyarn.application.id=<application_XXXX_YY>
    说明

    本文示例中的<application_XXXX_YY>为作业运行后返回的Application ID。

    job status

    您也可以通过Web UI的方式查看作业状态,详情请参见通过Web UI查看作业状态

  4. 执行以下命令,停止作业。

    flink cancel -t yarn-per-job -Dyarn.application.id=<application_XXXX_YY> <jobId>

Application模式

  1. 通过SSH方式连接集群,详情请参见登录集群

  2. 执行以下命令,提交作业。

    flink run-application -t yarn-application /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar

    提交成功后,会返回已提交的Flink作业的YARN Application ID。返回如下类似信息。Application

  3. 执行以下命令,查看作业状态。

    flink list -t yarn-application -Dyarn.application.id=<application_XXXX_YY>
    说明

    本文示例中的<application_XXXX_YY>为作业运行后返回的Application ID。

    您也可以通过Web UI的方式查看作业状态,详情请参见通过Web UI查看作业状态

  4. 执行以下命令,停止作业。

    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查看作业状态

  1. 访问Web UI。

    1. 登录EMR on ECS

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. 集群管理页面,单击目标集群的集群ID

    4. 单击上方的访问链接与端口页签。

    5. 访问链接与端口页面,单击YARN UI所在行的链接。

      访问Web UI的详细信息,请参见访问链接与端口

  2. 单击Application ID。

    Application ID
  3. 单击Tracking URL的链接。

    application information

    进入Apache Flink Dashboard页面,即可查看作业的状态。Apache Flink Dashboard

相关文档

Flink on YARN的更多信息,请参见Apache Hadoop YARN