数据接入治理平台
总篇73篇 2019年 第47篇
背景:
随着之家业务的快速发展以及大数据平台技术框架支持的开发语言多种多样,开发人员的背景差异也很大,这就产生出很多不同类型的程序(任务)运行在大数据平台之上,如: MapReduce 、 Hive 、 Java 、 Shell 、 Python 等。这些任务需要不同的运行环境,并且除了定时运行,各种类型之间的任务存在依赖关系。同时各业务部门内部及部门之家都有各种各样异构数据源之间的数据流转需求。
在之家大数据统一调度平台出现之前各业务的数据任务基本都是靠 azkaban+ 部分 Crontab 定时调度无法满足灵活多样的任务类型及任务之间多样化的依赖及触发方式以及批量补数等业务场景。而数据同步采用 sqoop ,无法兼容之家各种异构数据源( mysql 、 sqlserver 、 oracle 、 mongodb 、 hive 、 es 、 hbase 、文本、 ftp 等)之间的数据同步需求需要大量人工开发来支持。随着业务快速增加数据量增加快,任务多样化、任务关系复杂、人工开发成本高、任务执行效率低及任务失败不可控等问题更加凸显。
之家数据接入治理平台因此而诞生。其主要包括数据直通车,数据交换、分布式任务调度几个模块。下面将分别介绍。
架构及设计思路
数据接入治理平台主要包括数据直通车,数据交换、分布式任务调度三个部分。下面将分别介绍。
数据直通车
数据直通车为之家大数据部门业务数据入仓的入口,其主要作用是根据业务表的元数据信息调用调度平台接口自动生成数据交换任务配置和调度任务。同时负责自动完成 hive 建表和生成数据仓库 fdm 加工脚本。
统一调度平台
统一调度平台作为整个大数据数据部门的中枢贯穿于整条数据线。从数据接入、数据加工、再到数据交换,其按照依赖关系有序自动调度各作业,提高整条数据线的自动化程度及保证大数据平台海量数据吞吐能力。负责确保数几十万任务能够在正确的时间正确的环境下有序执行的同时保证集群的资源合理使用让数据以最快的方式处理完成,
基本功能包括简单高效的可视化任务配置和管理
作业历史运行记录
日志查看
支持多种灵活的任务依赖触发方式,支持依赖触发,定时触发,手工触发临时运行、手工触发恢复下游、支持任务自依赖(依赖当前任务上一数据周期执行结果)
支持自动批量回溯历史任务(批量补数据)、支持 api 回调通知第三方平台或程序处理后续事宜
支持多种任务类型 shell 、 python 、 java 、 datax 任务等。全链路支持集成数据接入、数据加工、数据交换及其它调度任务。原生支持 datax 任务类型支持一键上传 shell 、 python 、 jar 等程序。支持版本管理。
高可用分布式集群实时监控执行节点 cpu 、内存负载状态。故障节点任务自动转移其他节点。集群可以方便进行水平扩容。集群分组管理、资源调度深度隔离。
监控服务数据指标统计、智能分析、报警。统计计算结果数据。作业执行成功、失败、超时报警。报警(支持钉钉,电话,邮件,短信等多种)、 sla 任务看板
集成数据源管理,数据源信息运行时自动获取,敏感信息用户不可见保证数据安全。支持数据订阅、打通流程中心、权限管理、解决 hadoop 平台权限问题。结合之家流程中心无缝对接实现任务权限、表权限、数据源权限等统一管理。
数据交换平台
数据交换平台是各个之家各个部门各系统的异构数据源之间交换数据的桥梁。底层基于 datax 我们做了部分新的插件开发及部分功能的优化及封装同时实现了和调度平台的无缝对接。数据交换是作为调度平台的一种特殊任务类型而存在。其主要负责简单高效的将各种不同数据库类型之间的数据同步到其他数据库中。为日常工作中各种数据同步及数据迁移等带来极大的便利性,无需开发只需在调度平台上进行简单的配置即可快速完成创建一个数据交换任务来完成相应的工作。
为了解决异构数据源同步问题, DataX 将复杂的网状的同步链路变成了星型数据链路, DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到 DataX ,便能跟已有的数据源做到无缝数据同步。
DataX 本身作为离线数据同步框架,采用 Framework + plugin 架构构建。将数据源读取和写入抽象成为 Reader/Writer 插件,纳入到整个同步框架中。
Reader : Reader 为数据采集模块,负责采集数据源的数据,将数据发送给 Framework 。
Writer : Writer 为数据写入模块,负责不断向 Framework 取数据,并将数据写入到目的端。
Framework : Framework 用于连接 reader 和 writer ,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。