使用DLI提交Flink Jar作业
操作场景
Flink Jar作业适用于需要自定义流处理逻辑、复杂的状态管理或特定库集成的数据分析场景。需要用户自行编写并构建Jar作业程序包,在提交Flink Jar作业前,将Jar作业程序包上传至OBS,并将程序包与数据和作业参数一起提交以运行作业。
本例介绍通过DLI控制台提交Flink Jar作业程序包的基本流程。由于不同的业务需求,Jar包的具体编写会有所差异。建议您参考DLI提供的示例代码,并根据实际业务场景进行相应的编辑和定制。获取DLI样例代码。
操作流程
使用DLI提交Flink Jar作业的操作流程请参考表1。
开始进行如下操作前,请务必参考准备工作完成必要操作。
步骤1:开发Jar包并上传数据至OBS
DLI控制台不提供Jar包的开发能力,您需要在线下完成Jar包的开发。Jar包的开发样例请参考Flink Jar开发基础样例。
参考Flink作业样例代码开发Flink Jar作业程序,编译并打包为“flink-examples.jar”。参考以下操作步骤上传该作业程序。
提交Flink作业之前,需要在OBS中上传数据文件。
- 登录管理控制台
- 在服务列表中,单击“存储”中的“对象存储服务OBS”,进入OBS管理控制台页面。
- 创建桶,这里以桶名“dli-test-obs01”为例。
- 单击“创建桶”。
- 进入“创建桶”页面,选择“区域”,输入“桶名称”。其他参数保持默认值或根据需要选择。
创建OBS桶时,需要选择与DLI管理控制台相同的区域,不可跨区域执行操作。
- 单击“立即创建”。
- 单击所建桶“dli-test-obs01”,进入“对象”页面。
- 选择左侧列表中的“对象”,选择“上传对象”,将需要上传的文件,例如“flink-examples.jar”上传到指定目录,单击“确定”。
本例文件上传成功后,路径为“obs://dli-test-obs01/flink-examples.jar”。
关于OBS管理控制台更多操作请参考《对象存储服务用户指南》。
步骤2:购买弹性资源池并添加队列
执行跨源场景的SQL作业,不能使用系统已有的default队列,需要您创建SQL队列,本例创建弹性资源池“dli_resource_pool”、队列“dli_queue_01”。
- 登录DLI管理控制台。
- 在左侧导航栏单击“资源管理 > 弹性资源池”,可进入弹性资源池管理页面。
- 在弹性资源池管理界面,单击界面右上角的“购买弹性资源池”。
- 在“购买弹性资源池”界面,填写具体的弹性资源池参数。
- 本例在华东-上海二区域购买按需计费的弹性资源池。相关参数说明如表2所示。
- 参数填写完成后,单击“立即购买”,在界面上确认当前配置是否正确。
- 单击“提交”完成弹性资源池的创建。
- 在弹性资源池的列表页,选择要操作的弹性资源池,单击操作列的“添加队列”。
- 配置队列的基础配置,具体参数信息如下。
表3 弹性资源池添加队列基础配置 参数名称
参数说明
配置样例
名称
弹性资源池添加的队列名称。
dli_queue_01
类型
选择创建的队列类型。
- 执行SQL作业请选择SQL队列。
- 执行Flink或Spark作业请选择通用队列。
_
执行引擎
SQL队列可以选择队列引擎为Spark或者Trino。
_
企业项目
选择对应的企业项目。
default
- 单击“下一步”,配置队列的扩缩容策略。
单击“新增”,可以添加不同优先级、时间段、“最小CU”和“最大CU”扩缩容策略。
本例配置的扩缩容策略如图2所示。表4 扩缩容策略参数说明 参数名称
参数说明
配置样例
优先级
当前弹性资源池中的优先级数字越大表示优先级越高。本例设置一条扩缩容策略,默认优先级为1。
1
时间段
首条扩缩容策略是默认策略,不能删除和修改时间段配置。
即设置00-24点的扩缩容策略。
00-24
最小CU
设置扩缩容策略支持的最小CU数。
16
最大CU
当前扩缩容策略支持的最大CU数。
64
- 单击“确定”完成添加队列配置。
步骤3:使用DEW管理访问凭据
跨源分析场景中,需要在connector中设置账号、密码等属性。但是账号密码等信息属于高度敏感数据,需要做加密处理,以保障用户的数据隐私安全。
数据加密服务(Data Encryption Workshop,DEW)安全、可靠、简单易用隐私数据加解密方案。
本例介绍在DEW创建通用凭证的操作步骤。了解更多请参考创建通用凭据。
- 登录DEW管理控制台
- 选择“凭据管理”,进入“凭据管理”页面。
- 单击“创建凭据”,配置凭据基本信息。
- 本例中第一行key对应的value为用户的AK(Access Key Id)
- 本例中第二行key对应的value为用户的SK(Secret Access Key)
图3 在DEW中配置访问凭据
- 后续在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
更多Flink jar 使用DEW获取访问凭证读写OBS示例请参考Flink Jar 使用DEW获取访问凭证读写OBS
步骤4:创建自定义委托允许DLI访问DEW读取凭证
- 登录管理控制台。
- 单击右上方登录的用户名,在下拉列表中选择“统一身份认证”。
- 在左侧导航栏中,单击“委托”。
- 在“委托”页面,单击“创建委托”。
- 在“创建委托”页面,设置如下参数:
- 委托名称:按需填写,例如“dli_dew_agency_access”。
- 委托类型:选择“云服务”。
- 云服务:(“委托类型”选择“云服务”时出现此参数项。)在下拉列表中选择“DLI"。
- 持续时间:选择“永久”。
- 描述:非必选,可以填写“拥有OBS OperateAccess权限的委托”。
- 配置完委托的基本信息后,单击“下一步”。
- 授予当前委托所需的权限策略,单击“新建策略”。
- 配置策略信息。
- 输入策略名称,本例:dli-dew-agency。
- 选择“JSON视图”。
- 在策略内容中粘贴自定义策略。
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "csms:secretVersion:get", "csms:secretVersion:list", "kms:dek:decrypt" ] } ] }
- 按需输入策略描述。
- 新建策略完成后,单击“下一步”,返回委托授权页面。
- 选择步骤8新建的自定义策略。
- 单击“下一步”,选择委托的授权范围。本例选择“所有资源”。
了解更多授权操作说明请参考创建用户组并授权。
- 单击“确定”,完成授权。
步骤5:创建Flink Jar作业并配置作业信息
- 创建Flink Jar作业。
- 在DLI管理控制台的左侧导航栏中,单击“作业管理 > Flink作业”,进入Flink作业列表页面。
- 单击“创建作业”,弹出“创建作业”对话框。
本例选择Flink Jar作业类型,作业名称为Flink_Jar_for_test。图4 新建Flink Jar作业
- 单击“确定”进入作业配置页面。
- 配置作业的基本信息。
参考表5配置作业的基本信息。
表5 参数说明 名称
是否必选
描述
所属队列
是
选择作业运行时使用的队列资源。
应用程序
是
选择步骤1:开发Jar包并上传数据至OBS中自定义的程序包。
主类
是
指定加载的Jar包类名。
“主类”参数用于指定Fink作业的入口,即包含main方法的类。这是Flink作业启动时首先执行的类。
当应用程序类型为.jar时,必须提供主类名称。
主类名称区分大小写,必须准确无误。
- 默认:根据Jar包文件的Manifest文件指定。
- 指定:必须输入“类名”并确定类参数列表(参数间用空格分隔)。
说明:当类属于某个包时,需携带包路径,例如:packagePath.KafkaMessageStreaming
Flink版本
是
选择作业运行时所使用的Flink的版本。
本例选择使用Flink1.15版本时请在作业中配置允许DLI访问的云服务的委托信息。
委托
否
选择Flink1.15版本时需要用户自行配置委托,否则可能影响作业运行。
- 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。
- 单击右上角“保存”,保存作业和相关参数。
- 单击右上角“启动”,进入“启动Flink作业”页面。
- 在“启动Flink作业”页面确认作业规格和费用,单击“立即启动”,启动作业。
启动作业后,系统将自动跳转到Flink作业管理页面,在
列中可以查看作业状态。作业提交成功后,状态将由
变为 。运行完成后显示“已完成”。如果作业状态为
或 ,表示作业提交或运行失败。用户可以在作业列表中的 列中,将鼠标移动到状态图标上查看错误信息,单击可以复制错误信息。根据错误信息解决故障后,重新提交。