写点什么

网易数据中台建设实践

  • 2019-11-28
  • 本文字数:5628 字

    阅读完需:约 18 分钟

网易数据中台建设实践

数据中台无疑是今年大数据圈最火的名词,不仅是互联网企业,就连很多传统企业都参与到数据中台的建设中,基于数据提高企业运营效率。作为网易集团公共技术研发部门,网易杭州研究院在过去一年一直致力于数据中台支撑产品的研发,推动数据中台在网易电商、音乐、传媒等业务的落地。本文将结合网易数据中台的建设实践,对数据中台的定义、建设方法论以及落地价值进行深入探讨。


数据中台是什么?

Hadoop 集群的开发运维,到构建大数据平台,再到数据中台建设,这是很多大型互联网公司大数据的建设历程。到底什么是数据中台,数据中台跟我们之前一直说的大数据平台有什么区别,我想可以通过一个例子来说明。


如果我们把数据中台看作是一个汽车工厂,那大数据平台就是工厂中的设备,Hadoop 集群则是工厂运作所必须的水、电、煤。Hadoop 提供的是大数据生产所必须的计算和存储资源,大数据平台使得数据开发人员具备了对数据的加工和处理能力,类比设备使得工人具备了对原材料的加工能力,但是大数据平台还不能提供产品,这么多的原始数据,要按照一定的方法论,进行良好的组织,加工,才能生成最终的指标,就如只有切割机、油漆机还不能生产汽车,各个零部件要按照一定的规则,通过设备组装在一起,才是一辆完整的汽车。



我们认为 数据中台是企业级大数据通过系统化的方式实现统一、标准、安全、共享的数据组织,以服务化的方式赋能前台数据应用,提高数据的使用效率。


数据中台与数据平台最本质的区别在于数据中台是具备业务属性的,输入的是原始数据,输出的是指标。数据中台包含了业务对数据的组织方法论,体现在主题域,业务过程的划分,数据模型的设计,指标、维度、度量的管理,如果我们想确定一个数据是指标还是维度,就必须理解业务。大数据平台提供的是与业务属性无关的工具集合,是数据的加工能力,至于加工的什么数据,平台并不关心。

数据中台解决的三大问题

在明确了数据中台与大数据平台的区别之后,我们需要探讨的是,数据中台到底解决了什么问题。归结起来,主要是三个:效率、质量和成本。



效率问题可以分为数据研发的效率、数据发现的效率和数据分析的效率。


首先是数据研发的效率,在我所接触的很多项目中,在项目初期,由于业务模式还不固定,变化比较快,往往缺少良好的主题域和分层的设计,烟囱式的开发模式占据了主导,随着业务复杂度和规模的上升,大量重复性的数据开发,制约了数据需求交付效率。一个需求往往需要一个星期甚至更长的时间才能上线,需求响应速度经常被业务部门诟病。


其次是数据发现的效率,由于开发数据的和使用数据的往往是不同的人,面对动辄数万张表,每张表有数十个甚至上百个字段,准确理解每张表的含义是一件非常困难的事。如果没有一个好用的系统,往往需要大量的沟通成本,对于数据开发,经常抱怨工作被打断,每天都在回答重复性的问题;对于分析师而言,想要知道有哪些数据可以用,找到自己想要的数据,需要花费大量的时间。在网易,建设数据中台之前,很多业务都在用很原始的方法,每个分析师都自己维护了一个 Excel,相当于自己的知识库,记录着一些常用的表。一个新的分析师想要了解数据,需要花费大量的时间。


最后是数据分析的效率,我们希望越来越多的人能够基于数据进行分析决策,但是数据分析本身确实存在门槛,取数对于大多数非技术专业的运营和分析师就是一个大问题,经常看到一个分析师的 SQL 把整个集群资源跑满还跑不出来,经常看到分析师遇到一个 SQL 异常不知所措。另外,传统的数据分析依赖的是分析师的经验,一个指标异常波动,需要从哪些维度去分析,完全靠分析师的个人技能,如何将经验变成一种知识,甚至是一种规范,沉淀到产品中,通过系统自动地进行全维度的钻取分析,降低数据分析的门槛,这其实也是业务面临的难题。


质量是数据中台需要解决的第二个问题,质量包括数仓设计的质量、指标的一致性、数据研发的质量。



数仓设计得好不好,主要体现在三个方面,完善度、复用性和规范性。数仓设计一般采用的是面向主题域的分层设计,对于 ODS 层保存的是业务原始数据,DWD 保存的是经过清洗的明细数据,DWS 是经过轻度聚合的汇总数据,ADS 或者 DM 是应用层、集市层数据,这是一个常见的 4 层模型划分。完善度的意思就是对于使用者而言,“要啥有啥”,对于不同分层,完善度的衡量方式也是有区别的,对于明细层,如果数仓中存在汇总层(DWS)数据直接引用 ODS 原始数据的情况,我们称之为跨层引用,这就说明细层数据建设是有缺失的,如果其他汇总层也要使用相同的数据,都从 ODS 层去引用,就存在重复清洗的问题。对于汇总层数据而言,如果 Query 覆盖率比较低,说明大量的查询都是直接查询明细数据,甚至是原始数据,这就说明汇总层数据建设完善度不够,对于使用数据的人而言,查询明细数据,不仅慢,而且查询成本高,经常出现一个查询 hang 住整个集群的情况。复用性主要强调的是一个表被多个表使用的情况,复用性越高,说明数仓的设计越合理,更多的数据在数仓被复用。规范性主要是指数仓中的表、字段的命名规范统一,相同指标、维度、度量的标识是一致的。


指标是数据加工的结果(也可能是中间结果),指标管理的核心在于确保指标的业务口径、计算逻辑和数据来源的一致,消除指标的二义性。数据开发经常遇到的一个情况是,两个数据产品,看到相同的一个指标,结果不一致,这可能是口径不一致导致的,当然也有可能是数据来源不一致导致的。


质量还包括数据的质量,这里面包括数据的一致性、准确性、及时性以及完整性。数据的一致性,具体表现在集市层相同的指标数据是否一致,维度是否一致,相关指标的趋势是否一致,不同数据源对同一个实体的值是否一致。准确性体现在数值计算的逻辑是否符合预期,数据格式是否正确。曾经我们有过一个深刻的教训,在电商业务中,由于业务侧更新上线后部分 IP 格式有问题,导致流量域、交易域部分指标出现异常波动。由于没有对数据进行质量稽查,问题的排查和定位花费了大量的时间。及时性主要体现在数据产出时延,我们一般通过数仓数据在指定时间(比如 5 点之前)产出完成率来衡量。另外对于实时数据,对时效性要求比较高,我们会拿数据计算延迟来衡量。完整性主要是表记录是否完整,包括记录数是否完整,字段是否完成。


成本是数据中台需要解决的第三个问题,成本包括计算资源成本、存储资源的成本以及人力研发成本。


数据就像手机里面的文件,如果不定时清理,手机存储空间永远不够用。我们经常发现,大数据成本比业务增长还要快,这一方面是由于烟囱式的开发导致的数据重复加工,浪费计算和存储资源,另一方面也是由于没有定时清理,及时将无用的数据和任务下线,导致已经没人看的报表,每天还从几十亿行的原始数据进行计算加工,浪费大量的资源。人力的成本其实跟效率有关系,如果效率得到提升,研发成本也会得到控制。


效率、质量、成本,这三个方面相互联系,我认为这是数据中台要解决的最重要的三个问题。

如何建设数据中台?

接下来我们要讲讲如何建设数据中台。建设数据中台,本质上是要减少数据的重复建设,提高数据的共享能力,做好数据的连接,对应的就是 OneData、OneService 和 OneEntity 三个方法论。OneData 要求数仓所有数据只加工一次,对应到数仓的设计层面,要求有统一的维度,对于明细层数据,相同粒度的度量只加工一次,对于汇总层的数据,相同粒度的指标只存在一份。OneService 是统一查询服务,原先数据开发和应用开发的边界是比较模糊的,哪些逻辑应该是由数据开发完成,哪些应该是由应用开发完成,我们甚至发现有些计算是在一个超大的 Redis 集群里面完成海量数据的加工计算,成本非常大,且不能共享。数据服务划清了数据和应用的边界,数据服务提供的是加工好的指标数据,应用通过数据服务,直接获取计算的结果,强制把公共计算逻辑下沉到数据层面,提高了数据的共享能力。OneEntity 主要是解决数据连接的问题,同一个用户,由于用户是否登录,在同一个模型中,可能存在重复的记录,如何识别两个 ID 是同一个用户,做到所有用户只有唯一的 ID 标识,这个是 OneEntity 要解决的问题。


对于三个方法论,我们的经验是必须通过系统化的方式,将规范沉淀到系统中,确保建设的效果。为了支撑数据中台的建设,我们研发了一套全链路大数据产品,网易猛犸 6.0,其架构图如下:



全链路大数据产品网易猛犸 6.0 建立在 Hadoop 基础之上,包括 16 个子产品(上图中绿色模块标识部分),覆盖了数据生产、治理的完整链路,本着“简单易用,举重若轻”的产品设计思想,我们采取了“组件式”的产品设计模式,每个产品都聚焦一个典型的场景,业务可以根据自身的需要,选择性的搭配一些产品应用,解决业务当前面临的问题。同时猛犸 6.0 具备可扩展的产品架构,业务方可以基于该产品提供的基础能力,扩展新的产品。


全链路大数据产品网易猛犸 6.0 在大数据开发、任务运维、数据集成等大数据平台的基础上,主要增加了两个板块,一个是 OneData 体系,它是以元数据中心作为基础的,在元数据中心之上提供了 5 个中台相关的产品:数仓设计中心、数据资产中心、数据质量中心、指标系统和数据地图。


  • 数仓设计中心:按照主题域、业务过程,分层的设计方式,以维度建模作为基本理论依据,按照维度、度量设计模型,确保模型、字段有统一的命名规范。

  • 数据资产中心:主要作用是梳理数据资产,基于数据血缘,数据的访问热度,做成本的治理。

  • 数据质量中心:主要是通过丰富的稽核监控规则,对数据进行事后校验,确保问题数据第一时间被发现,避免下游的无效计算,分析数据的影响范围。

  • 指标系统:管理指标的业务口径、计算逻辑和数据来源,通过流程化的方式,建立从指标需求、指标开发、指标发布的全套协作流程。

  • 数据地图:提供的是元数据的快速检索,数据字典、数据血缘、数据特征信息的查询,相当于元数据中心的一个门户。


另外一个板块就是 OneService 体系,对应的就是数据服务。数据服务对外提供 Restful API,屏蔽底层各种数据源,加工好的指标,导出到 Greenplum、MySQL、Redis、HBase 里面进行查询,数据服务将用户访问的 Restful API 转化为底层对各种数据源的访问。数据服务可以认为是数仓的网关。


在数据服务之上,就是应用层,这里可以分为两类,一类是通用性数据应用,包括报表系统、大屏系统、自助分析系统,本身不具备行业属性,任何业务都可以使用;另一类是行业性的数据应用,比如电商的供应链系统、传媒的舆情系统。在我们的数据中台划分中,通用性的数据应用也被划入了中台的范围内,因为中台本质是提供共性能力,对于数据中台,就是提供共享的数据。


数据中台的价值数据中台是一个自上而下的工程,需要投入大量的人力和资源,很多企业想做数据中台,却又不知道如何去衡量数据中台的价值,下面结合网易的实践,给大家一些参考。


  • 消除指标的不一致:在做数据中台之前,指标业务口径不一致,数据来源不一致,计算逻辑不一致,经常是造成同个指标结果不一样的原因。通过指标系统,我们对所有数据产品的指标进行了全面梳理,按照主题域、业务过程进行划分,对指标按照原子指标和派生指标进行拆分,消除冗余指标、无效的指标,明确所有指标的业务口径、计算逻辑和数据来源。通过指标系统,我们可以快速的查询,数据产品上直接引用指标系统的业务口径,在数据产品上,我们完全消除了指标的二义性。

  • 数仓设计水平提升:在做数据中台之前,我们有大量的表没有明确的主题域和业务过程划分,大量汇总层数据直接引用原始数据,ODS 层有大量的任务直接引用,大量 Query 直接查询原始数据。在数据中台建设后,整个数仓水平上了一个台阶,不仅所有数仓维护的非中间表均有明确的主题域和分层,并且完全消除了汇总数据直接引用 ODS 层原始数据的情况,数仓表的复用性显著提高,汇总层 Query 的覆盖率明显提升。

  • 取数效率提升:在做数据中台前,大量的数据发现都是通过人工协作交流的方式进行的,数据理解的准确性、效率都非常低。基于数据地图,我们实现 100% 自助取数,取数效率提升 300%,分析师满意度得到大幅提升。

  • 数据质量的提升:在做数据中台前,数据经常无法按时产出。我们规定每天 6 点前数仓的数据要产出完成,但是往往达不到这样一个要求,出现一个异常,经常被业务方投诉,而排查和定位一个故障,也需要大量的时间,有了数据质量中心后,通过大量的稽核监控规则,我们做到了先于使用数据的人发现数据的问题,并且基于全链路的监控,我们可以知道某个任务异常,影响了哪些指标,并且基于任务的历史运行数据,对故障恢复时间进行预测。

  • 数据成本减少:衡量这个其实是最简单的,直接就看数仓消耗的资源,原先是多少,数据中台建设之后又是多少,当然这里面存在业务增长的情况,我们核算的方法是把单个任务的成本占优化任务时,数仓消耗的当日成本占比,作为衡量指标,我们最终通过下架无用的、低价值的表和任务,为业务节省了 20% 的成本。

实施数据中台的建议

在文章的最后,我想给即将做数据中台,或者正在做数据中台的同学一些建议。


首先要有目标和度量,不管是做质量,还是成本,还是效率,没有目标,没有度量,就很难讲的清楚效果。其次,要通过系统化的方式对规范和方法论进行沉淀。数据中台不是一次性的事情,做质量,稽核监控规则要不断的完善,治理成本,任务和表的优化要持续进行。所以必须要有系统和产品做支撑。



最后,做数据中台必须要实现全链路,各个子产品要相互打通,BI 产品可以引用指标系统的口径定义,任务运维中心任务异常可以追踪到影响了哪个 BI 报表,数据资产必须要知道哪个 BI 报表访问了那个表,才能知道哪个报表的哪个指标消耗了多少资源,计算指标的 ROI。


作者简介:


郭忆,网易杭州研究院大数据专家,网易大数据平台网易猛犸、网易敏捷 BI 产品网易有数负责人。10 年互联网数据研发经验,曾经做过数据库,主导了网易关系数据库服务 RDS 建设;做过推荐工程,负责网易信息流推荐服务;目前主要从事企业级数据中台支撑产品以及通用型数据应用的研发,支撑网易电商、音乐、传媒等业务的大数据建设。


2019-11-28 09:0711396
用户头像
赵钰莹 InfoQ 主编

发布了 882 篇内容, 共 635.2 次阅读, 收获喜欢 2678 次。

关注

评论 2 条评论

发布
用户头像
讲的很清晰,数据研发方法论太多了。
2020-04-30 16:13
回复
用户头像
谢谢
2019-11-28 17:43
回复
没有更多了
发现更多内容

为面试加油助力,90个常见的Kubernetes面试题,值得收藏学习

奔着腾讯去

Docker Kubernetes 容器 云原生 Go 语言

Android TTS语音播报实践

轻口味

android 音视频 TTS 11月日更

架构实战营模块二作业

spark99

架构实战营

亿滋中国X阿里云,释放新零售的数字化力量

阿里云大数据AI技术

大数据 零售

IM扫码登录技术专题(四):你真的了解二维码吗?刨根问底、一文掌握!

JackJiang

即时通讯 IM 二维码 扫码

创业邦聚焦新消费,2021 跨时代消费新发展峰会圆满落幕

创业邦

微信朋友圈复杂度分析

AHUI

架构实战营 「架构实战营」

模块二作业

周文

架构实战营 「架构实战营」

架构设计第二周学习总结

周文

架构实战营 「架构实战营」

移动App应用进入存量竞争阶段,如何全维度洞察用户体验?

博睿数据

阿里云消息队列 RocketMQ 5.0 全新升级:消息、事件、流融合处理平台

阿里巴巴云原生

阿里云 产品 RocketMQ 云原生

微信朋友圈的高性能复杂度分析

Puciu

架构实战营

Python代码阅读(第49篇):限制一个数在指定范围内

Felix

Python 编程 Code Programing 阅读代码

电商秒杀系统设计

张文龙

#架构实战营

Thoughtworks 正式成为阿里云云原生核心合作伙伴,携手共创数字新未来!

阿里巴巴云原生

阿里云 云原生 thoughtworks 合作伙伴

模块二作业

panxiaochun

架构实战营

crm的核心是什么?CRM对企业的核心作用是什么?

低代码小观

企业 企业管理 CRM 管理系统 CRM系统

eSOL和RTI合作支持汽车和工业自动化市场快速开发

薛斐

自动驾驶

元宇宙的三个阶段

石云升

元宇宙 11月日更 10月月更

实时语音如何过质量关?

声网

深度学习 算法 音视频

“极速、统一、开放”,StarRocks开启企业数据分析新局面

万字长文聊哈希

程序厨

面试 哈希 哈希表

[架构实战营] 模块二作业

张祥

架构实战营

《黑客之到》- 全网最详细的kali系统安装教程

学神来啦

网络安全 渗透 kali kali基础

全项指标第一,腾讯V265与新一代VAV1自研编码器登顶MSU视频编码器大赛

科技热闻

趣谈装饰器模式,让你一辈子不会忘

Tom弹架构

Java 架构 设计模式

架构实战 - 模块二

唐敏

架构实战营

微信朋友圈架构复杂度分析

Geek_nlp小咖

架构 微信朋友圈

机器人存在的问题挑战

分析微信朋友圈的高性能复杂度

Steven

架构实战营

#每个人的掌上图书馆# 藏书馆App基于Rainbond实现云原生DevOps的实践

北京好雨科技有限公司

容器 DevOps 云原生 k8s最佳实践 Kubernetes从入门到精通

网易数据中台建设实践_服务革新_郭忆_InfoQ精选文章