StarRocks的kafka导入任务管理

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导入任务的运维有一定的帮助~

1赞

很不错,starrocks_kafka这个工具开源不?

请教下,qstarrocks这个工具基于什么语言开发的?