与“数据中台”,来一次亲密接触
数据中台是 2015 年阿里提出来的双中台的概念其中的一个重要组成,阿里作为先驱者,提供了数据中台架构、以及非常多的建设思路供大家参考,但是一千人眼里有一千个数据中台,到底什么是数据中台?数据中台包含什么?
本文分享的议题主要包括如下几大内容:
带大家回顾一下大数据在国内的发展,从传统数仓到当前数据中台的演进过程。
我个人认为数据中台的核心组成,以及一些技术选型参考。
数据研发是数据中台很重要的一环,会分享一些我们在数据研发方面的实践,主要是数据仓库架构与研发方面。
大数据演进,从数据仓库到数据中台
第一阶段
第二阶段
大数据应用更为丰富,不仅限于决策分析,基于 APP/门户站点的搜索推荐、以及通过 A/B Test 来对产品进行升级迭代等是这个阶段常规的应用点,用户画像在这个阶段也得到重视,主要应用于企业的营销、运营等场景。
第三阶段
②工具组件化
④组织清晰化
当前阶段
大家知道共享复用是中台建设中很关键的一个词,这也是为什么我们很多数据中台下面会包括共享数据组,公共数据组等。
如上提到,数据中台本身是组织,方法的升级与变革,更多是利用技术的进步更好地支持这些升级变革,如果你当前的建设还是数据平台+数仓(数据湖等)但是已经具备这些方法和特性,我个人认为也是合理的。
数据中台是 2015 年阿里提出来的双中台的概念其中的一个重要组成,阿里作为先驱者,提供了数据中台架构、以及非常多的建设思路供大家参考。
数据中台架构与技术选型
数据中台架构核心组成
底座是数据基础平台,包括数据采集平台&计算平台&存储平台,这些可以自建也可以使用云计算服务。
中间部分两大块是中台的公共数据区,公共数据区包括数据仓库(数据湖) ,主要负责公共数据模型研发,还包括统一指标(标签)平台,负责把模型组织成可以对外服务的数据,例如数据指标、数据标签。
上层是数据应用服务层,主要将公共数据区的数据对外包装并提供服务,包括数据接口平台、多维查询平台,数据可视化平台、数据分析平台等。
数据开发平台包括数据开发的各类工具组合,例如:数据管道工具(比如数据接入、数据导出)、模型设计工具、脚本开发工具、数据调度工具等。
数据管理平台包括统一元数据管理、数据质量管理、数据生命周期管理。针对数据全链路的数据管理,保证数据中台可以监控数据链路中的数据流向、数据使用效果、数据生命周期,以衡量数据的价值与成本。
以上是数据中台的核心部分,数据中台的组成也可以更加丰富,比如包括:数据资产平台、算法平台等等。
数据中台技术选型参考
数据抽取层:Sqoop 和 Flume 是两大主流工具,其中 Sqoop 作为结构化数据(关系型数据库)离线抽取,Flume 作为非结构化日志接入。
数据存储层:Hadoop 文件系统 HDFS 大家都比较了解,而 Kafka 作为流式数据总线应用也非常广泛。
计算与调度层,包括:
离线计算:离线计算主要是 Hive,Spark,也有部分选用 Tez。
实时计算:前些年 Storm,Spark 比较流行,最近几年大家纷纷往 Flink 转型。
数据调度:除了像 Airflow Azkaban Oozie 等,易观开源的 Dolphin-scheduler 也非常活跃。
数据引擎层:也就是我们常说的 OLAP 层,我们看到这一层里的选择非常多,就不一一列举了(业务需求带动技术进步的典型,选择丰富主要是可以适配不同的数据应用场景)。
从概念上讲分为 ROLAP、MOLAP 以及两者混搭。MOLAP 提前做一些预计算,以生成 Cube 的方式,达到空间换取查询效率。
而 ROLAP 是即查即用,效率完全取决于查询引擎的性能,我个人认为从将来看,ROLAP 的趋势会更加明显,因为没有中间的数据链路。
但目前看来,没有一个统一的引擎足以支撑各类数据场景(这或许是将来的机会~)。
数据可视化层:比较主流的有 Metabase、Superset、Redash,也可以选择阿里、百度的一些开源控件。
是否有鲜活的成功案例,优先找自己类似业务场景。
接口的开放性,与其他组件的兼容性。
社区活跃性度&发展趋势。
数据研发实践
数据处理架构
下面是一个简单的数据处理架构演进过程:
最近几年随着 Flink 等技术的发展,有一个趋势是流批一体化,在接入层统一采用流式接入,计算层采用统一套框架支持实时计算+离线计算,批处理仅仅作为流处理的一个特殊场景进行支持。
数仓分层与主题分类
①数仓分层
业务数据层(ODS 层):原始数据经过缓冲层(STG)的加载,会进入数仓的业务数据层,这一层采用范式建模,基本保持与数据源完全一致的结构,对于变化的数据,使用数据拉链加工与存储。
一次性接入数据源结构,针对需求的变动不用频繁去与数据源对接。
便于业务研发更好地理解数据,同时是也是公司的原始数据资产。
保留历史数据的同时,尽可能少占用存储空间,长期来看,拉链存储比起每天全量保留历史节约大概 90% 空间。
快速、高效地获取历史任意一天业务系统的快照数据。
对于商品、用户主数据类可能分散在不同的源系统中采用纵向整合;横向整合主要包括交易、内容等行为数据不同业务过程的整合。
比如:用户(用户信息、注册信息)购买(下单、支付、结算、覆约、完成)商品(商品信息,商家信息,等)。
我们会把订单流转业务过程整合放到一张明细表里,同时会研发一些基于用户、或者商品视角的轻度汇总宽表。
宽表非常便于理解和易用,下游应用调用也方便。我们之前也做过一些统计,在调用分布来看,宽表的使用占到 70% 以上。
虽然宽表的使用在数仓建模中非常普遍,但是也有一些缺陷:
数据冗余较多,在存储、计算、调用较为占资源,建议尽量还是按场景去使用。
宽表整合的信息较多,数据权限不好控制。建议可以根据需求,在有限范围内开放整体宽表权限,或者通过视图或者子表的方式建立不同权限的数据范围,适应不同组织的需求。
宽表通常依赖比较多,会影响数据的产出的时效。
主题分类
参照波特价值链,分析企业本身经营的业务(基本活动、支持型活动),分别对应哪些数据。
参照业界通用模型,例如像 IBM、TD 等针对大型行业(如电信、金融、零售)有一些数据主题的通用划分方法。
对企业的内部数据(线上数据模块、数据字典)进行摸底,确认对应到哪些主题。
第一级是主题域,针对相对稳定的主题进行合并,归拢到主题域,利于数据的理解与建立全局的数据资产目录。
第二级是主题。
第三级是子主题,主要针对有些主题下分类较多,比如供应链主题下会包含采购、仓储、配送等子主题。
数据业务域是根据企业经营的具体业务,结合企业的组织架构进行划分,层次和分类可以相对灵活,子分类可以允许重复,因为两条不同的业务域可能经营相同的业务,例如电商、内容下都有会员这个业务。
数据研发流程
除了合理的架构之外,数据研发的流程也很重要,总体流程如下:
在之前数据中台的核心架构提到不闭门造车,数据研发需要与业务部门充分衔接,比如在数据调研中要与业务研发同学进行线上数据&结构访谈。
模型设计完成后,可以一键生成数据知识文档:
数据生命周期管理
一方面数据量的飞速增长不仅仅需要占用大量存储,比如像自建机房,会涉及扩充机柜、机房,往往会面临一些瓶颈。
另外一方面,大量的数据会降低数据的计算效率,所以从数据的生成开始,我们就需要考虑生命周期,并且结合数据的使用情况制定数据归档、数据销毁等管理策略。
降存量:通过数据压缩技术、降副本等方式,以及在数据模型更合理的设计,将存量数据存储降低。
控增量:根据数据重要性,可恢复性等考量角度,确认数据的保留周期,并根据周期自动归档或删除。
摊成本:可以通过一些算法,比如数据调用分布、需求来源等,把成本分摊到相应业务部门,让相关业务部门关注到成本。
数据质量管理
数据质量管理主要包括 3 个角度:准确性、及时性、一致性。管理的环节包括:事前、事中、事后、以及事故管理。
数据应用架构
这张图是一个应用架构的简图参考:
数据仓库(或者数据湖):负责原始数据的计算,主要将数据落地到 HDFS。
数据引擎层:数据加工完成之后,会将数据推送到不同的引擎中,这一层之前提到选择非常多,可以根据自己的场景选择一个混搭组合,比如我们目前选择的有 Presto,Kylin,Druid,MySQL。
数据服务层:通过统一化的 SQL 调用服务,屏蔽底层不同的数据引擎,为上层统一查询提供标准接口。
指标平台:指标平台是一个非常关键的产品,定位于衔接数据研发与数据应用,包括指标的标准定义、逻辑、计算方式、分类等各项内容。指标分类上我们分为标准指标(指标口径经过审核过)、以及非标准指标。
多维查询:这是我们的一个即席查询工具,查询的数据主要来源指标平台,可以选定不同的指标维度组合进行结果呈现,用户可以一次性查询得到结果,也可以将查询结果配置成可视化的报表进行固化。
最右侧是权限管理:权限管理关乎到数据安全,在设计上需要考虑周全,比如针对表级、指标级、维度级别都可以进行控制;同时产品层面也需要灵活配置权限审批级别与人员。
数据 ROI 评估
在数据研发中,也要考量数据的 ROI,下面是一个简单的 ROI 模型:
数据研发趋势&关注点:
提效:目前借助工具的研发可以把绝大部分数据研发工作线上化,将来借助 AI 等能力,实现数据处理中包括开发、运维的自动化,提升处理效率。
灵活:流批一体化,包括流处理与批处理自由切换,之前已经提到过,个人认为也是一个发展的趋势。
降本:数据研发链路的成本控制,在数据建设的早期通常不太引起关注,随着数据量不断的积累,往往存储、计算成本成为瓶颈。针对数据建设成本需提前考虑。
算力:我们看到 Google,IBM 和阿里都在研究量子计算,将来的数据中间层(比如数仓的公共模型)是否可以考虑虚拟化(比如只保留规则&数据结构),具体数据内容在应用发起时,即调即用,更多时候可以不需要占用存储资源。算力的不断提升,有可能会颠覆一些传统数据建设的思路。
作者:颜博
简介:现任马蜂窝数据仓库团队负责人,曾供职于京东、IBM、亚信等公司。数据行业老兵一名,历经传统数据仓库、大数据平台到数据中台的发展。
编辑:陶家龙
出处:转载自微信公众号 DBAplus 社群(ID:dbaplus),本文根据颜博老师在〖Deeplus 直播第 218 期〗线上分享演讲内容整理而成。
精彩文章推荐:
MySQL它不香吗,为什么还要NoSQL?张一鸣:为什么BAT挖不走我们的人才?
2小时快速搭建一个高可用的IM系统