文档首页/ 数据湖探索 DLI/ 快速入门/ 使用DLI提交Flink Jar作业
更新时间:2024-09-27 GMT+08:00

使用DLI提交Flink Jar作业

操作场景

Flink Jar作业适用于需要自定义流处理逻辑、复杂的状态管理或特定库集成的数据分析场景。需要用户自行编写并构建Jar作业程序包,在提交Flink Jar作业前,将Jar作业程序包上传至OBS,并将程序包与数据和作业参数一起提交以运行作业。

本例介绍通过DLI控制台提交Flink Jar作业程序包的基本流程。由于不同的业务需求,Jar包的具体编写会有所差异。建议您参考DLI提供的示例代码,并根据实际业务场景进行相应的编辑和定制。获取DLI样例代码

操作流程

使用DLI提交Flink Jar作业的操作流程请参考表1

开始进行如下操作前,请务必参考准备工作完成必要操作。

表1 使用DLI提交Flink Jar作业的操作流程

操作步骤

说明

步骤1:开发Jar包并上传数据至OBS

准备Flink Jar作业程序包并上传至OBS。

步骤2:购买弹性资源池并添加队列

创建提交Flink作业所需的计算资源。

步骤3:使用DEW管理访问凭据

跨源分析场景中,使用DEW管理数据源的访问凭证。

步骤4:创建自定义委托允许DLI访问DEW读取凭证

创建允许DLI访问DEW的委托。

步骤5:创建Flink Jar作业并配置作业信息

创建Flink Jar作业分析数据。

准备工作

  • 已注册华为账号并开通华为云,且在使用DLI前检查账号状态,账号不能处于欠费或冻结状态。
  • 配置DLI委托访问授权
    DLI使用过程中涉及到OBS、VPC、SMN等服务交互,首次使用DLI需要用户配置委托授权,允许访问这些依赖服务。
    1. 使用华为云账号登录DLI管理控制台,在左侧导航栏单击“全局配置 > 服务授权”。
    2. 在委托设置页面,勾选基础使用、跨源场景、运维场景的委托权限后,单击“更新委托权限”。
    3. 查看并了解更新委托的提示信息,单击“确定”。完成DLI委托权限的更新。
      图1 配置DLI委托访问授权
    4. 完成配置后,在IAM控制台的委托列表中,可查看到dli_management_agency的委托信息。

步骤1:开发Jar包并上传数据至OBS

DLI控制台不提供Jar包的开发能力,您需要在线下完成Jar包的开发。Jar包的开发样例请参考Flink Jar开发基础样例。

参考Flink作业样例代码开发Flink Jar作业程序,编译并打包为“flink-examples.jar”。参考以下操作步骤上传该作业程序。

提交Flink作业之前,需要在OBS中上传数据文件。

  1. 登录管理控制台
  2. 在服务列表中,单击“存储”中的“对象存储服务OBS”,进入OBS管理控制台页面。
  3. 创建桶,这里以桶名“dli-test-obs01”为例。
    1. 单击“创建桶”
    2. 进入“创建桶”页面,选择“区域”,输入“桶名称”。其他参数保持默认值或根据需要选择。

      创建OBS桶时,需要选择与DLI管理控制台相同的区域,不可跨区域执行操作。

    3. 单击“立即创建”。
  4. 单击所建桶“dli-test-obs01”,进入“对象”页面。
  5. 选择左侧列表中的“对象”,选择“上传对象”,将需要上传的文件,例如“flink-examples.jar”上传到指定目录,单击“确定”

    本例文件上传成功后,路径为“obs://dli-test-obs01/flink-examples.jar”

    关于OBS管理控制台更多操作请参考《对象存储服务用户指南》。

步骤2:购买弹性资源池并添加队列

执行跨源场景的SQL作业,不能使用系统已有的default队列,需要您创建SQL队列,本例创建弹性资源池“dli_resource_pool”、队列“dli_queue_01”。

  1. 登录DLI管理控制台。
  2. 在左侧导航栏单击“资源管理 > 弹性资源池”,可进入弹性资源池管理页面。
  3. 在弹性资源池管理界面,单击界面右上角的“购买弹性资源池”。
  4. 在“购买弹性资源池”界面,填写具体的弹性资源池参数。
  5. 本例在华东-上海二区域购买按需计费的弹性资源池。相关参数说明如表2所示。
    表2 参数说明

    参数名称

    参数说明

    配置样例

    区域

    选择弹性资源池所在区域。

    华东-上海二

    项目

    每个区域默认对应一个项目,由系统预置。

    系统默认项目

    名称

    弹性资源池名称。

    dli_resource_pool

    规格

    选择弹性资源池规格。

    标准版

    CU范围

    弹性资源池最大最小CU范围。

    64-64

    网段

    规划弹性资源池所属的网段。如需使用DLI增强型跨源,弹性资源池网段与数据源网段不能重合。弹性资源池网段设置后不支持更改

    172.16.0.0/19

    企业项目

    选择对应的企业项目。

    default

  6. 参数填写完成后,单击“立即购买”,在界面上确认当前配置是否正确。
  7. 单击“提交”完成弹性资源池的创建。
  8. 在弹性资源池的列表页,选择要操作的弹性资源池,单击操作列的“添加队列”。
  9. 配置队列的基础配置,具体参数信息如下。
    表3 弹性资源池添加队列基础配置

    参数名称

    参数说明

    配置样例

    名称

    弹性资源池添加的队列名称。

    dli_queue_01

    类型

    选择创建的队列类型。

    • 执行SQL作业请选择SQL队列。
    • 执行Flink或Spark作业请选择通用队列。

    _

    执行引擎

    SQL队列可以选择队列引擎为Spark或者Trino。

    _

    企业项目

    选择对应的企业项目。

    default

  10. 单击“下一步”,配置队列的扩缩容策略。

    单击“新增”,可以添加不同优先级、时间段、“最小CU”和“最大CU”扩缩容策略。

    本例配置的扩缩容策略如图2所示。
    图2 添加队列时配置扩缩容策略
    表4 扩缩容策略参数说明

    参数名称

    参数说明

    配置样例

    优先级

    当前弹性资源池中的优先级数字越大表示优先级越高。本例设置一条扩缩容策略,默认优先级为1。

    1

    时间段

    首条扩缩容策略是默认策略,不能删除和修改时间段配置。

    即设置00-24点的扩缩容策略。

    00-24

    最小CU

    设置扩缩容策略支持的最小CU数。

    16

    最大CU

    当前扩缩容策略支持的最大CU数。

    64

  11. 单击“确定”完成添加队列配置。

步骤3:使用DEW管理访问凭据

跨源分析场景中,需要在connector中设置账号、密码等属性。但是账号密码等信息属于高度敏感数据,需要做加密处理,以保障用户的数据隐私安全。

数据加密服务(Data Encryption Workshop,DEW)安全、可靠、简单易用隐私数据加解密方案。

本例介绍在DEW创建通用凭证的操作步骤。

  1. 登录DEW管理控制台
  2. 选择“凭据管理”,进入“凭据管理”页面。
  3. 单击“创建凭据”,配置凭据基本信息。
    • 本例中第一行key对应的value为用户的AK(Access Key Id)
    • 本例中第二行key对应的value为用户的SK(Secret Access Key)
      图3 在DEW中配置访问凭据
  4. 后续在DLI Flink jar作业编辑界面设置访问凭据的参数示例。
    flink.hadoop.fs.obs.bucket.USER_BUCKET_NAME.dew.access.key=USER_AK_CSMS_KEY_obstest1
    flink.hadoop.fs.obs.bucket.USER_BUCKET_NAME.dew.secret.key=USER_SK_CSMS_KEY_obstest1
    flink.hadoop.fs.obs.security.provider=com.dli.provider.UserObsBasicCredentialProvider
    flink.hadoop.fs.dew.csms.secretName=obsAksKflink.hadoop.fs.dew.endpoint=kmsendpoint
    flink.hadoop.fs.dew.csms.version=v6flink.hadoop.fs.dew.csms.cache.time.second=3600flink.dli.job.agency.name=agencyname

步骤4:创建自定义委托允许DLI访问DEW读取凭证

  1. 登录管理控制台。
  2. 单击右上方登录的用户名,在下拉列表中选择“统一身份认证”。
  3. 在左侧导航栏中,单击“委托”。
  4. 在“委托”页面,单击“创建委托”。
  5. 在“创建委托”页面,设置如下参数:
    • 委托名称:按需填写,例如“dli_dew_agency_access”。
    • 委托类型:选择“云服务”。
    • 云服务:(“委托类型”选择“云服务”时出现此参数项。)在下拉列表中选择“DLI"。
    • 持续时间:选择“永久”。
    • 描述:非必选,可以填写“拥有OBS OperateAccess权限的委托”。
  6. 配置完委托的基本信息后,单击“下一步”。
  7. 授予当前委托所需的权限策略,单击“新建策略”。
  8. 配置策略信息。
    1. 输入策略名称,本例:dli-dew-agency。
    2. 选择“JSON视图”。
    3. 在策略内容中粘贴自定义策略。
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "csms:secretVersion:get",
                      "csms:secretVersion:list",
                      "kms:dek:decrypt"
                  ]
              }
          ]
      }
    4. 按需输入策略描述。
  9. 新建策略完成后,单击“下一步”,返回委托授权页面。
  10. 选择步骤8新建的自定义策略。
  11. 单击“下一步”,选择委托的授权范围。本例选择“所有资源”。

    了解更多授权操作说明请参考创建用户组并授权

  12. 单击“确定”,完成授权。

    授权后需等待15-30分钟才可生效。

步骤5:创建Flink Jar作业并配置作业信息

  1. 创建Flink Jar作业。

    1. 在DLI管理控制台的左侧导航栏中,单击“作业管理 > Flink作业”,进入Flink作业列表页面。
    2. 单击“创建作业”,弹出“创建作业”对话框。
      本例选择Flink Jar作业类型,作业名称为Flink_Jar_for_test。
      图4 新建Flink Jar作业
    3. 单击“确定”进入作业配置页面。

  2. 配置作业的基本信息。

    参考表5配置作业的基本信息。

    表5 参数说明

    名称

    是否必选

    描述

    所属队列

    选择作业运行时使用的队列资源。

    应用程序

    选择步骤1:开发Jar包并上传数据至OBS中自定义的程序包。

    主类

    指定加载的Jar包类名。

    “主类”参数用于指定Fink作业的入口,即包含main方法的类。这是Flink作业启动时首先执行的类。

    当应用程序类型为.jar时,必须提供主类名称。

    主类名称区分大小写,必须准确无误。

    • 默认:根据Jar包文件的Manifest文件指定。
    • 指定:必须输入“类名”并确定类参数列表(参数间用空格分隔)。
    说明:

    当类属于某个包时,需携带包路径,例如:packagePath.KafkaMessageStreaming

    Flink版本

    选择作业运行时所使用的Flink的版本。

    本例选择使用Flink1.15版本时请在作业中配置允许DLI访问的云服务的委托信息。

    委托

    选择Flink1.15版本时需要用户自行配置委托,否则可能影响作业运行。

  3. FLink Jar作业的高级配置。

    参考表6配置FLink Jar作业。

    表6 FLink Jar作业的高级配置

    名称

    是否必选

    描述

    CU数量

    一个CU为1核4G的资源量。CU数量范围为2~400个。

    管理单元

    设置管理单元的CU数,支持设置1~4个CU,默认值为1个CU。

    并行数

    作业中每个算子的最大并行数。

    说明:
    • 并行数不能大于计算单元(CU数量-管理单元CU数量)的4倍。
    • 并行数最好大于用户作业里设置的并发数,否则有可能提交失败。

    TaskManager配置

    用于设置TaskManager资源参数。

    勾选后需配置下列参数:

    • “单TM所占CU数”:每个TaskManager占用的资源数量。
    • “单TM Slot”:每个TaskManager包含的Slot数量。

    保存作业日志

    设置是否将作业运行时的日志信息保存到OBS。

    勾选后需配置下列参数:

    “OBS桶”:选择OBS桶用于保存用户作业日志信息。如果选择的OBS桶是未授权状态,需要单击“OBS授权”

    作业异常告警

    设置是否将作业异常告警信息,如作业出现运行异常或者欠费情况,以SMN的方式通知用户。

    勾选后需配置下列参数:

    “SMN主题”

    选择一个自定义的SMN主题。如何自定义SMN主题,请参见《消息通知服务用户指南》“创建主题”章节。

    异常自动重启

    设置是否启动异常自动重启功能,当作业异常时将自动重启并恢复作业。

    勾选后需配置下列参数:

    • “异常重试最大次数”:配置异常重试最大次数。单位为“次/小时”。
      • 无限:无限次重试。
      • 有限:自定义重试次数。
    • “从Checkpoint恢复”:从最新保存的checkpoint恢复作业。

      勾选该参数后,还需要选择“Checkpoint路径”。

      “Checkpoint路径”:选择checkpoint保存路径。必须和应用程序中配置的Checkpoint地址相对应。且不同作业的路径不可一致,否则无法获取准确的Checkpoint。

  4. 单击右上角“保存”,保存作业和相关参数。
  5. 单击右上角“启动”,进入“启动Flink作业”页面。
  6. 在“启动Flink作业”页面确认作业规格和费用,单击“立即启动”,启动作业。

    启动作业后,系统将自动跳转到Flink作业管理页面,在状态列中可以查看作业状态。

    作业提交成功后,状态将由提交中变为运行中。运行完成后显示“已完成”。

    如果作业状态为提交失败运行异常,表示作业提交或运行失败。用户可以在作业列表中的状态列中,将鼠标移动到状态图标上查看错误信息,单击可以复制错误信息。根据错误信息解决故障后,重新提交。