回顾一下,第一篇文章大白话 六问数据中台!你想知道的都在这了!。把数据中台是什么?为什么?有什么价值?说的明明白白。数据中台是企业级能力复用平台,目标是让数据持续用起来,通过数据中台提供的工具、方法和运行机制,把数据变为一种服务能力,让数据更方便地被业务所使用。
今天就来点实际干货,把企业真实数据平台架构分享给您!相信看完这篇文章,你会真正对数据中台有一个全景的认识与理解,从抽象过度到具体。无图无真相,我赶紧po一张数据中台总体架构图:
数据中台是在底层存储计算平台与上层的数据应用之间的一整套体系,屏蔽掉底层存储平台的计算技术复杂性,降低对技术人才的需求,可以让数据的使用成本更低。如果用三句话来概括数据中台的组成架构,那么一定是:
- 通过数据中台的数据汇聚、数据开发模块建立企业数据资产。
- 通过资产管理与治理、数据服务把数据资产变为数据服务能力,服务于企业业务。
- 数据安全体系、数据运营体系保障数据中台可以长期健康、持续运转。
现在您已经知道了,数据中台离不开这几个模块:数据汇聚、数据开发、资产管理、数据安全、数据服务。那么赶紧跟上我的脚步潜入内部去一探究竟吧。
数据汇聚
数据汇聚,首先必然要有数据来源,有了数据来源之后,需要确定采集工具,有了采集工具之后你还要确定存储位置。
数据来源
数据是数据中台的核心,所以数据汇聚无疑是数据中台的入口。企业中的数据来源极其多,但大都都离不开这几个方面:数据库,日志,前端埋点,爬虫系统等。
- 数据库我们不用多说,例如通常用mysql作为业务库,存储业务一些关键指标,比如用户信息、订单信息。也会用到一些Nosql数据库,一般用于存储一些不那么重要的数据。
- 日志也是重要数据来源,因为日志记录了程序各种执行情况,其中也包括用户的业务处理轨迹,根据日志我们可以分析出程序的异常情况,也可以统计关键业务指标比如PV,UV。
- 前端埋点同样是非常重要的来源,用户很多前端请求并不会产生后端请求,比如点击,但这些对分析用户行为具有重要的价值,例如分析用户流失率,是在哪个界面,哪个环节用户流失了,这都要靠埋点数据。
- 爬虫系统大家应该也不陌生了,虽然现在很多企业都声明禁止爬虫,但往往禁止爬取的数据才是有价值的数据,有些管理和决策就是需要竞争对手的数据作为对比,而这些数据就可以通过爬虫获取。
这些数据分散在不同的网络环境和存储平台中,另外不同的项目组可能还要重复去收集同样的数据,因此数据难以利用,难以复用、难以产生价值。数据汇聚就是使得各种异构网络、异构数据源的数据,方便统一采集到数据中台进行集中存储,为后续的加工建模做准备。
数据汇聚可以是实时接入,比如实时消费mysql的binlog进行数据同步,也可以是离线同步,比如使用sqoop离线同步mysql数据到hive。
技术选型
数据汇聚一般用到的技术包括:
- Flume
- Sqoop
- Datax
- Canal
数据落地
采集之后必然需要将数据落地,即存储层,常见的有:
- MYSQL、Oracle、Tidb
- Hive、Hdfs、HBase
- Redis
- ElasticSearch
由于篇幅问题,本文不详细说明。关于采集工具以及存储层的选择和使用、后续会有专门的文章介绍。请关注公众号【胖滚猪学编程】,一个集颜值与才华为一身的女程序媛,坚持原创,用漫画形式让编程so easy。
数据开发
数据开发可以理解为数据汇聚和数据资产的一个桥梁。何为数据资产?数据资产是有价值的数据。而数据汇聚是原始数据,业务人员一般是难以使用的。原始数据-->有价值的数据,是需要一个过程的。那么就是让数据开发模块来完成这个过程。
数据开发是一整套数据加工及管控的工具,包括离线开发,智能调度,实时开发,人工智能等。
举个例子,某公司想知道广告投放的效益,而原始数据包括埋点数据,用户注册数据,用户消费数据等,是不是需要整理一个sql,跑一个广告效益报表呢?毫无疑问需要。那么我们就可以通过智能调度平台,定时跑出业务需要的数据;也可以通过实时流计算,实时展示业务需要的数据。这都是属于数据开发模块的功能。
- 离线计算:计算推荐使用SparkHive。调度平台可以使用Azkaban、Oozie、EasySchedule。
- 实时计算:推荐使用Flink、SparkStructStreaming、SparkStreaming、Storm
- 人工智能:推荐使用TensorFlow、Spark ML
由于篇幅问题,本文不详细说明。后续文章有详细说明离线计算、实时计算的选型、应用场景和落地方案。请关注公众号【胖滚猪学编程】,一个集颜值与才华为一身的女程序媛,坚持原创,用漫画形式让编程so easy。
数据开发模块适合对象是数据开发、算法建模人员,提供离线、实时、算法开发工具以及任务的管理、代码发布、运维、监控、告警等一些列集成工具,方便使用,提升效率。他们可以依赖于数据开发模块提供的基础功能,快速把数据加工成对业务有价值的形式,提供给业务使用。
数据资产管理
有了数据汇聚、数据开发模块,中台已经具备传统数仓平台的基本能力,可以做数据的汇聚以及各种数据开发,就可以建立企业的数据资产体系。
这里我有必要再次强调一遍:数据资产指的是有价值的数据。这个也正是资产管理模块需要去做的事情。如何让数据变的有价值?第一体现在数据本身上,比如需要保证数据的质量。第二体现在业务上,偏技术的数据体系业务人员是比较难理解的,因此资产管理需要用企业全员更好理解的方式,把企业的数据资产展现给企业全员(当然要考虑权限和安全管控)。
数据资产管理包括数据地图、元数据管理、数据质量、数据血缘、数据生命周期等进行管理和展示,以一种更直观的方式展现企业的数据资产,提升企业的数据意识。
现在你会有很多疑问,数据地图是什么?元数据管理是什么?数据血缘又是什么?这些都是非常核心的地方,别急,后续文章我会以公司真实落地方案和应用场景对每一个模块进行说明,先发几张图让你对它们有一个初步的概念。
数据质量和安全
数据质量和安全在很多架构图中归属于资产管理模块,但是笔者认为数据质量和安全应该是贯穿整个数据中台的。数据汇聚和数据开发的时候显然也应该考虑质量和安全问题,所以笔者倾向于将数据质量单独拿出来作为一个模块。
数据质量
我们会遇到无处不在的数据质量问题,包括业务系统脏数据、数据不一致不准确等。影响数据使用和上层决策。
为什么会出现数据质量问题呢?大部分是如下几个原因
- 开发代码的BUG
- 数据源变更:比如由于MYSQL表结构变更,导致HIVE同步MYSQL任务失败。
- 基础设施和服务不稳定或资源不足:比如流量猛增的情况导致OOM
由于这些原因,会导致数据不符合以下"四性",因此存在数据质量问题:
- 完整性:指的是数据信息是否存在缺失的状况,可能是整个数据记录缺失,也可能是数据中某个字段信息的记录缺失。
- 一致性:是指数据是否遵守了统一的规范,数据集合是否保持了统一的格式。比如商品购买率=商品购买用户数 / 商品访问量,如果在不同的模型中,商品购买用户数是1W、商品访问量10W,商品购买率20%,那这三个指标就存在不一致。
- 准确性:是指数据记录的信息是否存在异常或错误。比如数据格式是否为正确的ip。
- 及时性:是指数据从产生到可以查询的时间间隔,也叫数据的延时时长。
而数据质量无疑是非常重要的一部分,就算你数据再多再快,不准也无用。因此数据质量管理平台尤为重要。数据质量管理是支持多种异构数据源的质量校验、通知、管理服务的一站式平台。包括数据探查、对比、质量监控、SQL扫描和智能报警等功能。数据质量监控可以全程监控数据加工流水线,根据质量规则及时发现问题,并通过报警通知负责人及时处理。
在实际生产中,可从以下几个方面做好数据质量工作:
- 离线数据:数据是否完整、一致和准确,比如HIVE离线同步业务库MYSQL数据,同步完需要对比数据条数。
- 实时数据:除了数据是否完整、一致和准确,还需要检测数据是否断流、数据是否延迟。
- 报警监控:支持短信、微信告警到对应负责人。
数据安全
数据安全的重要性不用多说,如果你把用户信息泄露了,严重会导致整个公司都倒闭。因此对于全链路的数据,都应该做好数据安全工作。比如应该把业务库/日志的敏感数据进行脱敏,为身份证、银行卡等常用的数据类型提供掩盖脱敏策略。以及日志审计等。
数据生命周期安全可以分为以下几个部分:
- 数据采集安全:包括数据源鉴别以及记录等
- 数据传输安全:包括数据传输加密等
- 数据存储安全:包括存储介质安全、数据备份恢复等
- 数据处理安全:包括数据脱敏等
- 数据交换安全:包括数据共享安全、导入导出安全等
- 数据销毁安全:包括数据销毁和介质销毁等
数据服务体系
前面利用数据汇聚、数据开发建设企业数据资产,利用数据管理展现企业的数据资产,但是并没有发挥数据的价值。数据的价值体现一定是在业务层面、即数据服务体系。就是把数据变为一种服务能力,通过数据服务让数据参与到业务,激活整个数据中台,数据服务体系是数据中台存在的价值所在。
数据服务体系是基于公司自身的产品和业务的,比如以电商公司为例,数据服务就包括了:精准营销、用户画像、经营分析、可视化大屏等。
总结
搭建企业级数据中台之前,务必把数据中台全景架构图设计好,对每一个模块的定位、功能、作用做到心中有数。
笔者收集到10张高清数据中台架构图,包括阿里数据中台全景图、电商数据中台全景图等,对你理解数据中台构建数据中台具有重大价值!文章不便于一次发10张图,请关注公众号【胖滚猪学编程】回复"数据中台" 获取。