StarRocks的kafka导入任务管理
--2022-05-21 春雷
----------------------前言----------------------
目前,公司的StarRocks的数据库增长迅速,在近一年的时间,已经近50套集群了;在业务使用StarRocks时,有多种接入方式,常见的有flink,datax,kafka,stream load等,其中的kafka直接写入是很方便的一种方式,为routine load;
当前已经在运行的kafka任务超过了120个,急需一个对kafka导入任务的管理体系。
梳理需求如下:
- 业务人员:工单申请接入kafka,简单的引导方式
- DBA:自动化执行kafka工单
- 开发、DBA:查看
- 可查看任务运行状态
- 可查看任务的基本信息
- 非running等异常状态,可报警
- 可查看延迟信息及详细的各个partition的延迟信息
- 可查看创建SQL
- 可查看导入的条数、报错条数等
- 开发:操作
- 可以下线任务
- 可以重建任务
- 可以设置报警接收人员
--------------------------------------刀耕火种时期------------------------------
在刚接触StarRocks时,使用kafka导入,即routine load,需要DBA写好创建任务的SQL的范例,开发拼接好SQL后,给DBA,DBA再手动去库上执行,最后再检查状态。
有时候开发会问:为啥数据不更新了?DBA再去库上查看状态,发现几种常见的问题,例如:
- 任务已经停了,DBA却不知道
- 存在一定报错,报错url只能DBA看
- 达到报错上限
部分是处理了报错;部分是多个BE节点宕机导致,恢复了BE,任务就恢复了;
部分是需要重建,然后DBA找聊天记录,再把创建SQL执行一次。数据库多了,这种维护就让人崩溃~。
----------------------------改良时期--------------------------
综上,发现我们的需求是:
- 任务的状态感知与报警
- 报错开发也可以看
- 支持快速重建
于是我们开发了报警工具,可以获取所有集群的kafka任务的状态,并调用短信接口报警给DBA。
同时开发了快速查看任务创建SQL的工具,qstarrocks,可以通过此命令快速查看任务的状态与创建SQL,进行快速重建。原理就是利用show routine load命令的结果,拼接任务的创建SQL。
【查看集群的所有导入任务状态】:
【查看创建SQL】:
这样我们就能快速感知任务的状态,快速查看创建SQL,快速重建了。
---------------------再次提升时期-------------------------
虽然上面已经方便了许多,但是每天动不动就会有开发来问,我们的任务好像延迟了,给排查下。这时DBA就去库上看,发现无法看到延迟情况,这时候得去获取kafka的信息,才能知道任务的延迟情况,于是,我们整体设计了任务的管理,并开发了starrocks_kafka工具。
此工具整合了多种功能:
- 创建、重建kafka任务
- 查看kafka的状态:运行状态,延迟状态,消费行数等状态
- 查看kafka的具体数据
- 获取创建SQL
- 监控与报警:DBA与业务负责人
---------------- 架构设计--------------------
在维护StarRocks的kafka任务上,我们进行了架构上的整体设计,实现可以方便的维护kafka的任务
支持:
-
工单申请与执行
-
状态展示
-
重建任务等
-
报警
-
更改任务 (开发中…)
-------------------有图有真相------------------------
依托我们自己开发的CDB平台,分为用户端与管理端。
【用户端-申请kafka接入任务的工单】:
【用户端-任务展示】:
【用户端-具体任务展示】:基本信息 与 报错信息
【用户端-具体任务展示】:监控图
【用户端-具体任务展示】:创建SQL
------------------------------- 总结----------------------------------
经过以上的一些设计与工具、平台的开发,我们当前可以实现稍微轻松一些的kafka的任务维护了,且可以供业务同学方便的查看任务的相关信息了,后续还会继续补充:任务的更改,任务的重建操作等。
希望以上对大家的kafka导入任务的运维有一定的帮助~