本文根据刘波在【第十三届中国数据库技术大会(DTCC2022)】线上演讲内容整理而成。
讲师介绍
从事大数据开发10年+,在滴普科技负责20+个数据项目的架构设计与落地,先后主导了TOP级新零售企业的数据智能平台与互联网医疗企业的数据湖建设,最近1年负责一站式数据智能开发平台的研发工作,沉淀DataOps核心理念,并聚焦于湖仓一体和流批一体的架构设计及实践。
本文摘要:当前在很多企业中,建设数据平台,有较多的痛点,如数据平台建设慢、数据任务类型多、数据开发协同难、数据安全风险高、数据管理无体系、数据质量优化难、数据模型优化难、数据运营监控难、数据安全共享难等。
滴普FastData DataFacts面向PB级实时/离线数据开发、运维场景,提供集数据建模、数据集成、数据开发、数据服务等能力于一体的一站式数据开发平台,屏蔽复杂的技术环节,在保证数据安全底线的基础上,让数据开发工程师专注于面向业务需求的数据开发,实现易用、便捷、安全的高质量数据生产能力。
同时,面向企业数据资源散、乱、差等问题,通过数据标准及规范、数据建模、数据质量、数据资源管理、及数据安全等能力,对企业数据资源进行统一的管理及与运营,提升数据质量和运营效率,让数据可用、好用、易用。本次分享介绍了FastData DataFacts的架构设计与建设数据平台案例实践。
演讲正文:
DataFacts产品概述
DataFacts是滴普提供的云中立、一站式的数据智能服务平台,为数据工程师提供数据集成、数据建模、数据开发、数据服务、数据质量、数据安全等开箱即用的服务能力,降低企业数字化转型实施门槛,提升数据智能平台构建效率,赋能企业数据资产持续沉淀,从而实现数据价值可持续释放。
1、关键痛点
数据平台建设慢:数据平台涉及组件多,构建难度大、数据开发人员不能专注于数据业务。
数据任务类型多:缺乏有效手段统一离线/实时数据处理;数据类型多样化加剧数据流转及融合难度。
数据开发协同难:数据开发工具分散,开发任务难以统筹协同,开发效率低、不敏捷;数据任务缺乏统一审核、发布、运维机制,易出错、易返工、难维护。
数据安全风险高:对数据的访问、流通缺乏统一的安全策略。
针对上述痛点,DataFacts可以面向PB级实时/离线数据开发、运维场景,提供集数据建模、数据集成、数据开发、数据服务等能力于一体的一站式数据开发平台,屏蔽复杂的技术环节,在保证数据安全底线的基础上,让数据工程师专注于面向业务需求的数据开发,实现易用、便捷、安全的高质量数据生产能力。
2、核心能力
数据集成。基于CDC技术,提供不侵入业务系统的企业级实时数据同步服务,保障数据时效性、可用性;基于WAL架构下的CKP异常自动保存技术,实现断点续传,面对再复杂的网络状况,也能保证数据传输的稳定性;插件式能力扩展,快速迭代数据集成能力和数据源适配范围。
数据建模。支持逻辑模型、物理模型设计,保障建模流程规范可控;支持模型逆向工程,快速容纳管理企业存量数据模型;融合多个行业优秀实践方法论,提升建模效率。
数据开发。支持WEB SQL的可视化离线/实时任务开发,降低用户学习成本;多种任务DAG组织形式,实现跨流程、跨项目任务依赖,方便支持多种业务场景;丰富的大数据组件,根据资源现状灵活实现多种任务,资源利用率更高;支持数据的开发与生产环境隔离、多人协同开发,更安全、更高效。
数据运维。数据处理任务以DAG组织并监控,任务修复重跑、暂停、kill等操作更优雅;完备的告警体系,支持自定义告警规则和丰富的日志信息,提高运维效率。
数据服务。拖拽式工作流编排,实现复杂API的场景;统一的企业数据共享服务,严格管控数据使用权限;多视角监控及分析服务的使用情况,高效评估数据资产的价值。
数据质量。覆盖数据资产化全流程进行质量监管和检验,保障数据完整性、有效性、及时性、一致性、准确性、唯一性;内置质量检测规则模板并支持自定义规则,使质量检查场景更丰富;支持与ETL任务关联执行质量检查,及时发现问题数据,减少数据污染。
数据安全。贯穿数据资产化全程,提供对隐私数据的脱敏、权限管理和安全审计等多种数据安全管理措施,全方位保障数据的安全运作。
3、产品价值
智能运维,及时高效:数据任务智能化监控,异常告警及时处理。
大规模数据同步及ETL:支持PB级离线/实时数据处理规模,以及百万级任务复杂调度场景。
敏捷、及时、轻松:在开发过程中,基于DataOps理念,保证流畅畅通,让数据开发更专注、更高效。
数据安全有保障:数据安全策略贯穿数据资源化全流程。
建设快、门槛低:平台组件统一部署,开发工具开箱即用,维护成本低,可视化的操作界面。
4、产品优势
实时高性能数据同步:基于CDC技术,实现复网络环境下的实时数据实时同步,轻松应对海量异构数据源,全面覆盖各类数据同步场景。
技术兼容开放:兼容开源生态,支持多种计算引擎并可随心切换;兼容多种存储标准,满足多模态数据存储需求。
云中立:兼容主流公有云,支持混合云环境,打通云壁垒,保障各云之间的数据一致性管理,规避云计算厂家对企业的数据绑架。
生态开放:对外提供数据基础设施的各项能力,通过OpenAPI,助力实现多种大数据应用业务场景。
全流程数据质量监控:支持ETL全流程的事前、事中、事后数据质量检查和告警。
一站式数据开发:覆盖数据采集、建模、离线/实时开发、运维监控、服务开发等环节,数据开发者只需专注于业务开发。
支持复杂调度场景:支持ETL流程多层嵌套、跨项目、跨流程依赖调度。
DataFacts功能介绍
从产品功能架构图上可以看出,底座支持CDH、EMR、MRS、CDP、HDP、DLink等大数据平台或对应的数仓,在此基础上,整个平台有统一调度服务在托管所有任务的调度。
在基础服务之上,对整个集群做一些管理,包括引擎的配置,如SMK引擎、FLink引擎,基于关系型数据库,以及消息Kafka或消息队列,包括文件。
在数据建模层面,基于数仓建设的方法论去规划概念模型再到逻辑模型、物理模型,最终到模型和开发结合,根据固定加载策略生成对应的ETL模板,提高开发效率。
项目空间可以对基础配置,包括添加成员、增加/删除、权限管控,在开发时可以进行开发环境、测试环境、生产环境的隔离,互不影响、互不打扰,整个项目空间导入导出,可以在不同环境下以及物理隔离状态下做任务的迁移。
在数据开发层面,从数据集成、实时/离线采集,到读取/写入组件管理,包括采集过程中的任务监控,数据开发也是从离线/实时自动化的DAG,从这些相关方面已经引入了DataOps相关理念,包括自动化构建DAG,规范性检查,支持很多不同计算引擎下任务类型,比如FLink、Spark等,开发的同时做SQL的查询,验证整个业务逻辑编写是否正确是可以做一些数据检索,SQL脚本管理、查询结果下载等。
测试可以做到自动化测试,从测试用例设计、测试数据准备、执行、生成测试报告,在发布过程中,从申请、审核、发布记录、发布对比到运维监控。
从这个环节来看,是贯穿着整个数据开发全过程的,当数据开发完以后,最终还是要为下游应用提供相应的数据服务,就涉及到数据开发、API的开发、监控、安全策略的管控,再服务市场,最终提供给相关人员,通过权限管控的人员做一些订阅。在这个环节之上,最终数据质量怎么样,可以通过数据质量模块去做一些检测。
整个系统能够更好地协同起来,是少不了系统管理功能的,比如监控告警,会有消息中心去对接,比如对接电话、短信。审批,整个发布的审核、数据源申请都会涉及到审批中心的处理,包括账户、用户认证、权限管控。以及跟元数据治理相关的另外一个产品的集成上,都可以无缝去做。
1、数据建模
从数据标准出发,根据元数据质量、数据质量做数仓的规划,在此基础上,很好地把建模规范起来,去创建逻辑模型,在物理化以后,到数仓里,可以通过ETL Mapping功能,生成脚本。
2、数据集成
支持20多种主流数据源异构融合,基于CDC技术,依托断点续传能力,保障复杂网络情况下数据传输的稳定性、时效性、一致性。
覆盖mysql、sqlserver、oracle、postgresql、db2、hana等业务系统主流数据源,支持实现整库迁移、双数据中心、数据整合分发等海量数据高速同步场景,将所有数据同步到统一的存储计算引擎上。
3、数据开发
流程比较简单,从离线来看,支持HiveSQL、SparkSQL、ImpalaSQL等任务,以拖拉拽方式设计DAG流程,配置好调度参数,从而可以触发调度去执行任务。也可以支持SQL数据血缘解析和任务版本管理。
实时开发,支持FLinkSQL任务和基于资源上传的Jar任务,FlinkSQL任务可以通过模板快速生成sink和source代码,支持任务参数、运行参数、检查点、TTL参数、任务并行数等调度配置。
4、数据运维
可以区分为离线运维、实时运维。离线运维支持重跑、错误重试、停止、置成功等。实时运维,支持对任务运行性能的监控。
5、数据服务
可以支持“向导配置”API的开发,无需SQL,可以快速配置API,实现对表数据的查询。自动生成SQL语句,数据已经能够查看到了,通过相应测试以后发布上架,整个API就可以在市场被人订阅使用、消费。同时支持出错告警、耗时告警、限流告警等。
6、数据质量
质量规则,首先支持对应模板,以及可以支持自定义规则,对规则以及质量任务创建完以后做质量监控任务执行,最终生成对应数据质量报告,形成工单,去做流转,这时候数据开发工程师拿着工单报告再去做一些数据加工。可以看到从数据同步开发在解决问题,再来触发数据监控的任务,形成一个闭环,就是把整个过程监控到了。
7、数据安全
首先做到数据分级分类,这时候针对什么样级别的数据可以进行一些脱敏或加密,能够很好地管控起来。针对数据权限,为数据开发、服务开发、数据共享提供库级、表级、字段级等颗粒度的权限管控。
数据脱敏支持构建自定义敏感数据识别规则,并构建自动化的敏感数据发现任务及分布报表,并进行遮掩、截断、Hash等脱敏操作。
数据加密支持各种数据加密算法、管理加密策略。
日志审计可提供针对各类系统操作及数据访问操作的日志审计。
DataFacts开发流程
一站式数据开发
基础配置。开始之前会有一些基础配置,比如做一些计算存储引擎的配置,做连通性测试,以及账号权限设置。
数据模型设计。逻辑模型设计,包括模型分层、所属主题、模型数据、模型关系等信息;物理模型设计,包括数据库类型、表物理参数,创建的数据源等。
项目配置。整个数据开发过程是基于项目空间去对资源以及相应人员、权限等信息做逻辑隔离,这时候一定要新创建一个项目空间。
ETL工程开发。要开发实时任务,就可以选择实时任务创建,支持FLinkSQL等方式,创建完以后,可以在测试工作里做任务提交、任务执行,再做一些日志查看。开发完以后,可以把任务拖拽到面板里生成对应的DAG,再做一些参数的配置,比如调度触发的时间或基于事件的触发,或整个调度周期有效期都可以在这里做一些配置的。以及可以引用外部资源,包括自定义函数、设置一些变量。
ETL发布。从测试环境把整个DAG或数据任务发布到生产环境上去,就不能再做任何修改了。
ETL运维。在运维模块对生产环境任务做运维、监控、错误重试、补数据、流程管理、告警配置等自动化运维动作。
数据服务开发。首先会新建API,在API里自定义一些SQL,最终发布完以后做一些上架、审核以及权限管控,最终被下游订阅、使用。
数据平台案例实践
例如,线下门店零售企业,痛点比较深刻:系统差异问题:如库存口径、营业目标、分类汇总、算法逻辑、流程规范等问题待解决; 业财差异问题:如自营批发划分、库存分类差异、O2O销售等; 电商差异问题:不可共享库存、产品主数据差异、销售差异、库存口径差异等。
我们想在原来数仓基础上建立一个数据平台,有几个技术动因:
数据口径不一:业务和财务管理视角不一样,双方对数据理解有冲突,这也是很多企业经常碰到的共性问题。
部分数据维度缺失:数据分析有的从业务出发,有的财务视角的数据,数据缺乏统一存储,管理,利用,难以业务财务综合分析。
原有技术架构性能不足:原来是基于Oracle搭建数据仓库,所以在数据计算能力上肯定很难支撑业务快速迭代的。
滴普解决方案:
数据资产标准化:对现有业务逻辑、系统逻辑的梳理,实现统一数据视图。
数据赋能业务:基于统一数据平台,构建数据模型和数据分析,统一可靠地数据来源赋能业务。
数据可视化管理:通过使用DataFacts平台作为数据管理抓手进行数据安全管理、数据服务管理等管理动作。
给客户带来的价值:
数据平台算力提升:大数据集群以分布式+高可用部署直接提高了底座的健壮性;实时数据计算采用Flink 等最新技术保证了算力进一步提升。
服务响应提升:通过使用DataFacts平台,用户可以直接了解当前数据现状,快速定位需求,这种以终为始的响应模式保证响应效率进一步提升。
业务标准规范化提升:项目过程中制定的数据开发规范、数据建模规范、数据维护规范等标准规范,有利于保证后期数据运维可以持续性的提升。
数据管理能力成熟度提升:通过使用DataFacts平台作为数据管理抓手进行数据安全管理、数据服务管理等管理动作,有利于保质保量的达成统一数据、统一报表、统一大算的目标。
底层对应一些业务数据源,从采集层面来说都是基于CDC技术去采集的,比如监控MySQL的日志,把数据发布到Kafka,还有一部分数据做了分流,当时还做了基于Kafka实时数仓,最终做一些实时数据计算。
另外一部分是数据进入到了基于Kudu-ODS层,然后把数据在零点时以T+1站时效同步到Hive这边来,把实时数据转成离线数据,基于数仓建模方法论,把数据提供给下游相关数据应用,也有一些库表连接,因为这是根据不同的下游应用支持的能力去决策的。
整个平台先进性,首先可以基于实时监控做一体化状态任务的监控。可以做安全管理,以及云原生容器产品可以降低部署运维难度,整个成本也做了比较大的缩减。基于FLink打造了实时数仓,为数据分析提高时效。
再例如,某鞋服零售集团基于FastData数仓一体架构优化了成本、性能和效率
FastData数据平台基础底座包括流批一体数据分析引擎和一站式数据治理数据服务平台,在上层做了一些应用分析,最终实现了预测场景,以及对企业的指标,包括标签,去做升级改造。
数据源比较多,有结构化数据、半结构化数据、非结构化数据,整个结构化数据采集用DataFacts数据集成模块DCT,把数据从各个数据源,以实时任务的方式写到Kafka,再通过DCT或通过FLINK去消费,再入到DLink。
还有非结构化数据入湖,就是把一些音视频、文件、图片入到对象存储里,对于数据格式非常开放。
对于计算层,数据入湖、流处理、批处理、数据加工,都是基于流批一体方式实现。
在分析层面,可以实现联邦查询,包括物化视图,在Hive层面,Spark等,也做到很好的兼容,也可以做资源调度管理。
在数据开发层面,从数据开发模型的创建,以及血缘生成,还有数据服务提供,这是基于DataFacts的,在DLink这边,机器查询、联邦查询,以及提供实时数据集,通过DLink。
在最上层,数据API指标管理是通过DataSense提供,包括业务字典,是以低代码方式去实现的。
数据源做一些数据集成,写到Kafka,最终写到DLink里去,再到数据组织、编排,最终再到数据开发,再提供对应数据,给到下游应用,去做一些分析或BI或报表展现。
涉及到引擎也比较多,首先有FLink流处理引起,也有Spark批处理引擎,还有HiveSQL,原来基于CDH6.0.0,有HiveSQL、FLinkSQL等任务,在平台之上很好地兼容了刚刚说的几种任务类型。
开发过程中首先做一些数据采集、传输,做一些数据加工清洗,再到数据服务,以及数据治理相关能力的提供,以及提供一些数据机器查询,包括做一些可视化的操作。
涉及到的产品有DataFacts数据集成模块,有DCT等三个产品。
对于结构化数据入湖:
实时数据入湖就是从不同的业务数据库,通过DCT采集以后写到Kafka,这里还做了一些数据分流,为下游提供实时计算的,这时候通过FLink去消费,写到DLink里面去,最终可以供FLink以及HiveSQL做数据查询或加工。
离线的数据入湖,主要实现整库,通过DCT把整库数据同步写入到Hive里,通过SparkSQL写到DLink里去,一般更多是做历史数据初始化。
实时整库入湖,这也是为了缩减链路,可以针对一个库下面所有的票还是多张表,都可以做这样入湖的。
数据归档,根据对应企业业务现状,对于MySQL业务系统数据库到了一定数据存储的量以及时间、周期,会把数据做一些迁移,就会有一些数据被迁移到其他地方去存储起来,对应的业务系统里的数据库的数据就会做一些删除,做一些清理。这时候这个数据也会被DCT监控到,最终写到Kafka,但实际上这个数据在数据湖里不应该被删掉的,所以就会有同步的机制去做对应的处理。
实时采集任务迁移,因为原来一套架构也是比较经典的架构,把数据写到Kafka,同时制定了一些方案的策略。
在做一些数据初始化时,首先肯定有一些历史数据的初始化,对增量数据做一些衔接,这时候要很好地把控对应的时间点,比较标准的操作方案是首先启动实时DCT任务,启动时间T1,数据暂存在Kafka,且暂不消费;再启动离线任务,启动时间T2,初始化完成以后,时间节点是T3;离线任务完成后,T4的时间,实时任务从T2时间点开始消费Kafka。
湖上建仓
在湖上建仓时,数据分层都在DLink的存储上。首先是数据入湖到ODS层,支持实时与离线,详见“数据入湖”章节;DWD、DWS、DWT、ADS层都在DataFacts上完成,并支持数据治理能力。