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

背景信息

Dataflow集群中的Flink是以YARN模式部署的,在Dataflow集群中,您可以通过两种方式提交Flink作业:
  • 通过控制台的数据开发进行提交。

    提交Flink作业详情,请参见Flink(VVR)作业配置

  • 通过SSH方式登录Flink模式的Dataflow集群,在命令行中进行提交。
    在基于YARN模式部署的Dataflow集群支持Session模式、Per-Job Cluster模式和Application模式。
    模式 描述 特点
    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集群,详情请参见创建集群

Session模式提交并查看作业

  1. 通过SSH方式连接集群,详情请参见登录集群
  2. 执行以下命令,启动YARN Session。
    yarn-session.sh --detached
  3. 执行以下命令,提交作业。
    flink run /usr/lib/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>
    说明 本文示例中的<application_XXXX_YY>为作业运行后返回的Application ID。

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

Per-Job Cluster模式提交并查看作业

  1. 通过SSH方式连接集群,详情请参见登录集群
  2. 执行以下命令,提交作业。
    flink run -t yarn-per-job --detached /usr/lib/flink-current/examples/streaming/TopSpeedWindowing.jar
    提交成功后,会返回已提交的Flink作业的YARN Application ID。返回如下类似信息。Per-Job Cluster
    您可以执行以下命令,查看作业状态。
    flink list -t yarn-per-job -Dyarn.application.id=<application_XXXX_YY>
    说明 本文示例中的<application_XXXX_YY>为作业运行后返回的Application ID。
    job status

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

Application模式提交并查看作业

  1. 通过SSH方式连接集群,详情请参见登录集群
  2. 执行以下命令,提交作业。
    flink run-application -t yarn-application /usr/lib/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查看作业状态

通过Web UI查看作业状态

  1. 访问Flink-VVR的Web UI。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
    5. 在左侧导航栏中,单击访问链接与端口
    6. 访问链接与端口页面,单击YARN UI所在行的链接。
  2. 单击Application ID。
    Application ID
  3. 单击Tracking URL的链接。
    application information
    进入Apache Flink Dashboard页面,即可查看作业的状态。Apache Flink Dashboard

相关文档

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