7.2 Flink 作业管理
7.2.7 创建 Flink SQL 边缘作业
本章节介绍如何新建Flink SQL边缘作业。Flink SQL边缘作业是一种处理边缘设备产生 大量的数据时,为了减少数据上云的数据量或提高数据处理实时性,在靠近数据产生 的地方对其进行分析处理的作业。
该作业是数据湖探索与智能边缘平台结合,通过在边缘节点上部署系统提供的流计算 应用,将Flink计算能力从云端延伸到边缘。然后通过数据湖探索编辑Flink作业并下发 到边缘执行,可以帮助用户在边缘快速实现对流数据的实时、快速、准确地分析处 理。
前提条件
● 已开通智能边缘平台服务(IEF)。
● 已成功创建边缘节点和纳管边缘节点。具体操作步骤,请参见《智能边缘平台用 户指南》中边缘节点。
● 已成功部署边缘流计算应用。具体操作步骤,请参见《智能边缘平台用户指南》
中应用部署。
● IEF服务必须具有Tenant Administrator权限才能运行作业。
● 创建Flink SQL边缘作业前,请购买边缘鉴权码。边缘鉴权码的购买与使用详见购 买边缘鉴权码。
注意事项
部署边缘应用时,需要注意以下几点:
● 通过系统模板部署应用时,容器规格不得小于默认值,否则会造成实例部署失 败。
● 应用名称需要以“edge-dli-”为前缀,以保证DLI侧能获取相关边缘节点信息。
● 需要指定环境变量:PROJECT_ID(其值为用户账户对应项目的project_id,可以 在控制台右上角“我的凭证”页面获取)。
● 需要挂载容器 “/opt/flink/edgecsa” 目录到终端节点本地目录,赋予读写权 限,以保证容器异常重启情况下,系统能够自动重新拉起Flink作业。
● 需要在边缘节点部署Mosquitto软件,以保证容器能正常收发消息。mosquitto软 件的下载请参见:https://mosquitto.org/download/。
● 应用部署时,“容器网络”配置中“网络类型”选择“主机网络”,以保证容器 应用能正常访问Mosquitto。
● 当前版本仅支持专业版IEF实例,铂金版实例后续版本提供支持。
● 创建作业提交任务前,建议先开通云审计服务,用于记录与DLI服务相关的操作事 件,便于日后的查询、审计和回溯。云审计服务支持的DLI操作列表详见云审计服 务支持的DLI操作列表说明。
关于如何开通云审计服务以及如何查看追踪事件,请参考《云审计服务快速入 门》中的相关章节。
边缘流计算应用部署时支持通过容器环境变量自定义Flink部分参数配置,支持的参数 列表如下:
表7-12 参数说明
参数名 参数说明
JobManagerHeapSize Jobmanager堆内存大小,默认值:1024m TaskManagerMemory
ProcessSize TaskManager进程内存大小,默认值:2048m TaskManagerMemory
MetaSize TaskManager元空间内存大小,默认值:256m TaskManagerNetwork
BufferNum TaskManager网络缓存数,默认值:2048 NumberOfTaskSlots TaskManager task slot数量,默认值:1 RestartStrategy 重启策略,默认值:fixed-delay
RestartAttemptsNum 重启次数,默认值:3 RestartInterval 重启间隔,默认值:10s
TimeZone 时区,linux系统标准格式,默认值:Asia/Shanghai
创建 Flink SQL 边缘作业
步骤1 在DLI管理控制台的左侧导航栏中,单击“作业管理”>“Flink作业”,进入“Flink作 业”页面。
步骤2 在“Flink作业”页面右上角单击“新建作业”,弹出“新建作业”对话框。
图7-15 新建 Flink SQL 边缘作业
步骤3 配置作业信息。
表7-13 作业配置信息
参数 参数说明
类型 选择“Flink Edge SQL”:用户通过编辑SQL语句来启动作业。
名称 作业名称,只能由字母、中文、数字、中划线和下划线组成,并且长 度为1~57字节。
说明
作业名称必须是唯一的。
描述 作业的相关描述,且长度为0~512字节。
模板名称 当编辑器选择“SQL编辑器”时,该参数有效。
用户可以选择样例模板或自定义的作业模板。关于模板的详细信息,
请参见Flink模板管理。
参数 参数说明
标签 使用标签标识云资源。包括“标签键”和“标签值”。如果您需要使 用同一标签标识多种云资源,即所有服务均可在标签输入框下拉选择 同一标签,建议在标签管理服务(TMS)中创建预定义标签。具体请 参考《标签管理服务用户指南》。
根据需要编辑Flink SQL边缘作业,处理边缘设备数据。
当前支持的DDL如下:
● 输入输出流:edgehub;用户自定义
● 维表:RDS(MySQL、gaussdb100)
相关SQL语句请参考《数据湖探索SQL语法参考》。
参考示例:功能为输出学生成绩大于或者等于80分的姓名和成绩。
create source stream student_scores(name string, score int) with ( type = "edgehub",
topic = "abc", encode = "json",
json_config = "score = student.score; name=student.name"
);
create sink stream excellent_students(name string, score int) with ( type = "edgehub",
topic = "abcd", encode = "csv", field_delimiter = ","
);
insert into excellent_students select name, score from student_scores where score >= 80;
步骤6 单击“语义校验”,确保语义校验成功。
● 只有语义校验成功后,才可以执行“调试”、“提交”或“启动”作业的操作。
● 如果校验成功,提示“SQL语义校验成功”。
● 如果校验失败,会在错误的SQL语句前面显示红色的“X”记号,鼠标移动到
“X”号上可查看详细错误,请根据错误提示修改SQL语句。
步骤7 设置作业运行参数。
图7-16 设置 Flink SQL 边缘作业运行参数
表7-14 作业运行参数说明
参数 参数说明
CU数量 CU数量为DLI的计算单元数量和管理单元数量总和,CU也是 DLI的计费单位,1CU=1核4G。
管理单元 管理单元CU数量。
并行数 最并行数是指同时运行Flink作业的最大任务数。
说明最大并行数不能大于计算单元CU数的4倍。
所属边缘节点 选择作业所属的边缘节点。
● 边缘节点是您自己的边缘计算设备,用于运行边缘应用,
处理您的数据,并安全、便捷地和云端应用进行协同。边 缘应用是您需要在边缘节点上运行的功能模块。
● 数据湖探索支持选择多个边缘节点部署作业,通过作业所 属边缘节点的绑定,将数据湖探索Flink作业与IEF服务进行 结合。
IEF消息通道 创建IEF侧边云消息。
UDF Jar 用户自定义UDF文件,可通过“程序包管理”功能上传到数 据湖探索服务使用。
步骤8 单击“创建IEF消息通道”,创建IEF侧边云消息。
步骤9 单击“保存”,保存作业和相关参数。
步骤10 单击“提交”,进入“作业配置清单”页面,单击“确认”,将作业提交并启动。
● 格式化:将SQL格式化,将SQL语句格式化后,需要重新编辑SQL语句。
● 设为模板:将新创建的作业设置为作业模板。
mosquitto_pub -h 边缘节点IP -t abc -m '{"student":{"score":90,"name":"1bc2"}}';
“abc”为作业中定义输入流的topic名称。
步骤3 打开新的窗口,使用命令监听输出。输入以下命令,可查询到成绩大于或者等于80的 学生姓名和成绩。
mosquitto_sub -h 边缘节点IP -t abcd
“abcd”为作业中定义输出流的topic名称。
----结束