本文将从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情况以及运行日志。

写在最后

近年来,在AIOps领域快速发展的背景下,IT工具、平台能力、解决方案、AI场景及可用数据集的迫切需求在各行业迸发。基于此,云智慧在2021年8月发布了AIOps社区,旨在树起一面开源旗帜,为各行业客户、用户、研究者和开发者们构建活跃的用户及开发者社区,共同贡献及解决行业难题、促进该领域技术发展。

社区先后开源了数据可视化编排平台-FlyFish、运维管理平台OMP、云服务管理平台-摩尔平台、Hours算法等产品。

可视化编排平台-FlyFish:
项目介绍:https://www.cloudwise.ai/flyF...
Github地址: https://github.com/CloudWise-...
Gitee地址: https://gitee.com/CloudWise/f...
行业案例:https://www.bilibili.com/vide...

部分大屏案例:

您可以添加小助手(xiaoyuerwie)备注:飞鱼。加入开发者交流群,可与业内大咖进行1V1交流!

也可通过小助手获取云智慧AIOps资讯,了解FlyFish最新进展!


云智慧技术社区
70 声望18 粉丝

我们秉承Make Digital Online的使命,致力于通过先进的产品技术,为企业数字化转型和提升IT运营效率持续赋能。