数据中台之旅(五)数据开发介绍

功能介绍

数据开发 包含: 作业开发(sqoop\hive\impala\python\shell)、实时开发(flink)、调度管理(工作流\定时调度\DAG查询)、日志管理(定时调度日志\作业运行日志)

建设思路

作业开发: 数仓开发使用频率最高的一个功能。通过web化的开发方式大大提升开发效率,降低技术门槛。以前在平安使用的是shell、sql脚本,自己写整套的指令。我希望的是,开发人员只要关注业务逻辑sql编写就好了。不要管底层技术怎么运行的(当然爱学习的小伙伴还是关注底层的好,不然真的容易被淘汰)。目前平台拥有的功能是使用频率高的,后续要开发支持关系型数仓的,毕竟不是每个公司都有那么大的数据量。现在写sql的作业都已经实现sql血缘的拆解。
实时开发:类似的,实时开发目前我们底层基于flink,上层做的界面封装。可通过开发jar形式,flink sql形式来开发实时计算任务。当然实时开发有很多方案(apache doirs 实时数仓集群,可以了解下)
调度管理:首先调度会涉及到依赖,之后就是作业的定时运行。工作流就是用来配置依赖关系的。定时调度就是自由配置工作流运行时间(这里借鉴了oozie的一点设计思路)。目前平台支持开发好作业之后,直接配置上级依赖和下级运行作业,之后选择是否运行外部项目依赖这个工作流(这里达到了跨项目依赖的作用),之后配置定时(单作业开发时即可完成全部的操作)。DAG其实是查看所有任务依赖关系的,目前还没有做好。希望做成通过源头表(所有者)-》作业(所有者)-》结果表(所有者)-》应用(业务线、报表、所有者)
日志管理:分2类。第一类:定时调度日志。就是定时本身是否启动成功或失败。第二类:作业运行日志。是对运行的作业进行的日志记录,当然可以查看运行过程的详细情况。


操作介绍

作业开发:可新增sqoop同步、导出作业、新增 hive、impala、python、shell类型作业;每次保存记录历史版本;可设置自定义参数;可自动拆解血缘;可单作业循环补数;可单作业试运行;可直接配置工作流和定时调度;可设置作业优先级

数据中台之旅(五)数据开发介绍
实时开发:可选择Flink集群编写Flink sql;可上传jar运行Flink;可预览数据;可查看任务运行状态

数据中台之旅(五)数据开发介绍
调度管理:可管理工作流和定时调度;可单独新建工作流配置依赖关系;可选择开启是否运行外部项目依赖;可单独配置工作流运行时间

数据中台之旅(五)数据开发介绍
数据中台之旅(五)数据开发介绍

日志管理: 可查看定时调度情况;可查看作业运行情况;可停止作业;可重跑单个作业

数据中台之旅(五)数据开发介绍

 

小结


数据开发是数仓中很重要的功能。底层所有的运行逻辑都是自己编写的。2020年初自己设计的第一版调度逻辑居然有高并发问题,伤心死了(第一次受过这样的挫败)。之后花了一周时间重新调整,已经支持高并发高可用架构(其实就是改成微服务)。
有些小伙伴会问,你们用了这个平台做开发没有。我们公司一直在用,目前平台作业量3000+。每天稳定调度。
我们平台组三个小伙伴。第三个小伙伴入职一段时候后非常惊讶的问我,说:"平台这么稳定怎么做到的,我们之前晚上都需要人值班看作业运行情况的"。我只能告诉他:"这套调度逻辑,从初始的脚本化版本,到平台化。迭代5年了"。
数据开发模块是投入时间比较多的。自己一直想着一个进化路线: 脚本->工具->平台->产品->服务 才走了一半的路.
脚本阶段迭代了3年。
工具阶段迭代了1年。
平台阶段还在进行中,做了1年+了。
路还很长,继续努力吧(感觉很累,但不想放弃它)。在哪里我都会带上它(真的像自己的小孩一样,期待它的长大)。开源它暂时还不允许,公司在用着它。


篇章:

数据中台之旅(一)数据大势所趋

数据中台之旅(二)平台整体介绍
数据中台之旅(三)系统中心介绍
数据中台之旅(四)项目中心介绍
数据中台之旅(六)数据服务介绍
数据中台之旅(七)数据管理介绍

 

闻道有先后,术语有专攻。宁欺白须公,莫欺少年穷。