提交Flink作业

本文为您介绍如何提交Flink作业。

前提条件

已在E-MapReduce on ACK控制台创建Flink集群,详情请参见快速入门

方式一:通过ACK控制台提交作业

  1. 登录EMR on ACK控制台

  2. 在EMR on ACK页面,单击目标集群所在行所属ACK集群列的链接。

  3. 容器组页面,单击右上角的使用YAML创建资源

  4. 创建页面,从示例模板列表中,选择自定义,模板内容请复制以下内容,然后单击创建

    apiVersion: flink.apache.org/v1beta1
    kind: FlinkDeployment
    metadata:
      name: basic-emr-example
    spec:
      flinkVersion: v1_13
      flinkConfiguration:
        taskmanager.numberOfTaskSlots: "2"
        state.savepoints.dir: file:///flink-data/flink-savepoints
        state.checkpoints.dir: file:///flink-data/flink-checkpoints
      serviceAccount: flink
      podTemplate:
        spec:
          serviceAccount: flink
          containers:
            - name: flink-main-container
              volumeMounts:
                - mountPath: /flink-data
                  name: flink-volume
          volumes:
            - name: flink-volume
              emptyDir: {}
    
      jobManager:
        replicas: 1
        resource:
          memory: "2048m"
          cpu: 1
      taskManager:
        resource:
          memory: "2048m"
          cpu: 1
    
      job:
        jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar
        parallelism: 2
        upgradeMode: stateless
    说明

    本文以Flink 1.13版本为例,其他版本时请修改flinkVersion的配置,具体版本以控制台为准。

方式二:通过kubectl工具提交作业

  1. 通过kubectl连接Kubernetes集群,详情请参见获取集群KubeConfig并通过kubectl工具连接集群

    您也可以通过API等方式连接Kubernetes集群,详情请参见使用Kubernetes API

  2. 新建basic-emr-example.yaml文件,文件内容如下。

    apiVersion: flink.apache.org/v1beta1
    kind: FlinkDeployment
    metadata:
      name: basic-emr-example
    spec:
      flinkVersion: v1_13
      flinkConfiguration:
        taskmanager.numberOfTaskSlots: "2"
        state.savepoints.dir: file:///flink-data/flink-savepoints
        state.checkpoints.dir: file:///flink-data/flink-checkpoints
      serviceAccount: flink
      podTemplate:
        spec:
          serviceAccount: flink
          containers:
            - name: flink-main-container
              volumeMounts:
                - mountPath: /flink-data
                  name: flink-volume
          volumes:
            - name: flink-volume
              emptyDir: {}
    
      jobManager:
        replicas: 1
        resource:
          memory: "2048m"
          cpu: 1
      taskManager:
        resource:
          memory: "2048m"
          cpu: 1
    
      job:
        jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar
        parallelism: 2
        upgradeMode: stateless
    说明
    • 文件名您可以自定义,本文以basic-emr-example.yaml为例介绍。

    • 本文以Flink 1.13版本为例,其他版本时请修改flinkVersion的配置。

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

    kubectl apply -f basic-emr-example.yaml -namespace <集群对应的namespace>
    说明

    本文示例代码中的<集群对应的namespace>,需要替换为集群的命名空间,您可以登录E-MapReduce on ACK控制台,在集群管理页面查看。