数据平台与 Flink 任务运行原理介绍
本文将从 5 个方面详细介绍数据平台大数据任务开发的基础知识。包含数据平台的简介、如何在平台内创建 Flink 表、如何编写 Flink 大数据处理作业、Flink 任务启动时的调用流程以及 Flink web UI 任务监控页面。此外,将重点介绍数据平台内 Flink 任务开发相关的部分内容,包括 Flink 数据连接、Flink 流作业、批作业和资源库。资源库为自定义的 UDF,为了方便介绍后续将统一简称为平台。
云智慧 AIOps 社区是由云智慧发起,针对运维业务场景,提供算法、算力、数据集整体的服务体系及智能运维业务场景的解决方案交流社区。该社区致力于传播 AIOps 技术,旨在与各行业客户、用户、研究者和开发者们共同解决智能运维行业技术难题、推动 AIOps 技术在企业中落地、建设健康共赢的 AIOps 开发者生态。
数据平台
平台定义
平台基于 Flink 计算框架,集成 Kafka、Clickhouse 等大数据组件,具备数据采集、数据同步、数据存储、实时计算、离线计算、数据治理、数据服务等能力。实践平台化思维,充分利用数据,可实现复杂业务的数据开发任务,构建了一套完整的技术生态体系。
平台目标
定位为实时数仓、流批一体、湖仓一体的智能大数据平台,提升整体的 IT 运营服务能力。
Flink 数据连接
Flink 数据连接是 Flink 读取和写入到 web 系统数据库的一个接口。下图为 Flink 数据连接的一个页面,左侧的为目录数,方便数据源的归类与查找。右侧列表化展示数据连接,可根据数据连接的名称、类型、标签等内容进行检索,支持导入、导出与复制,方便做迁移和备份编辑。右上角新建按钮可以点击新建 Kafka、Redis 以及 Clickhouse 的原表和结果表。通过页面式、配置化操作,将各数据资源虚拟化成 Flink 表。

新建 Kafka 源表
命名数据连接名称:名称方便于在数据列表中进行查询。

地址和端口:用于读取集群上的 topic;
Kafka 类型:Kafka 类型分为 Kafka 和 upsert-Kafka;
数据格式:常用数据格式为 json;
消费方式:分为从头开始消费(从最老的数据将 Kafka topic 完整的数据都消费到)、从当前位置,从 group offset 以及从指定时间开始消费;
最大读取记录数:一批次内读取的最大数据量;
key 格式与字段

动态表名称:后续在 Flink SQL 中写 SQL 时将会用到,即建表的表名

Kafka 源表创建完成之后,将会得到该建表语句

支持数据连接类型
Kafka:支持 Kafka 连接器和 upsert-Kafka 连接器
Clickhouse:基于 jdbc 连接器开发,支持 Clickhouse 集群和多节点轮询数据写入
Redis:自主开发,支持单机、集群、哨兵和代理模式的 Redis 服务,提供写入和维表关联能力
逐步支持更多的数据连接
数据作业开发
数据作业开发页面与数据源页面类似,左边为目录,右边可以新建编辑作业。

编辑 SQL 页面支持以下操作:
支持勾选数据源表和数据结果表
选择数据表后,填充建表语句至编辑区,支持自定义修改
支持添加自定义算子

SQL 编辑完成后可进行作业配置操作:
并行度:任务每个算子的线程数
插槽数:每个插槽独占 CPU 资源,但使用同一个执行器的 JVM 内存资源(同一个 taskmanager 的插槽),增加插槽数会获取更多的计算资源,但不利于内存资源的利用效率。
重启策略:可设置固定重启次数和失败比例策略

任务启动流程
Flink 任务启动会运行起一个 JobManager 和一个或多个 TaskManager。
JobManager:负责资源提供、回收、分配,任务调度、处理完成或失败的任务、协调 checkpoint、提供 REST 接口和 WebUI 展示作业执行信息。
TaskManager:执行作业任务并缓存和交换数据流,包含一个或多个 task slot。TaskManager 中 task slot 的数量表示并发处理 task 的数量,一个 task slot 中可以执行多个算子。

TaskManager 是一个 JVM 进程,所包含的多个 Task Slot 会均分 JVM 内存。 多个算子可共享一个 Task Slot,有利于资源分配和资源利用,并行度设置为 Task Slot 数的整数倍,会均匀的分配到每个 Task Slot。

Flink 任务监控页面
平台内维护了任务状态、运行日志等内容,Flink 自身也提供了详细的任务监控能力,Flink 任务监控包含 Flink 任务运行状态、时长以及资源分配情况的监控。会展示算子 DAG 图,数据处理情况以及算子反压、异常日志、Checkpoint 记录等。

下图为 TaskManager、JobManager 的内存占用、GC 情况以及运行日志。

了解更多
云智慧已开源集轻量级、聚合型、智能运维为一体的综合运维管理平台 OMP(Operation Management Platform) ,具备 纳管、部署、监控、巡检、自愈、备份、恢复 等功能,可为用户提供便捷的运维能力和业务管理,在提高运维人员等工作效率的同时,极大提升了业务的连续性和安全性。点击下方地址链接,欢迎大家给 OMP 点赞送 star,了解更多相关内容~
GitHub 地址:https://github.com/CloudWise-OpenSource/OMP
Gitee 地址:https://gitee.com/CloudWise/OMP
微信扫描识别下方二维码,备注【OMP】加入 AIOps 社区运维管理平台 OMP 开发者交流群,与 OMP 项目 PMC 面对面交流,和更多行业大佬一起学习~

评论