数据中台架构与技术选型

转自https://www.sohu.com/a/396680882_411876?scm=1002.44003c.17c024f.PC_ARTICLE_REC
作者:颜博,马蜂窝数仓研发总监

1、数据中台架构核心组成

我认为的数据中台核心架构包括四大组成部分,具体是:
底座是数据基础平台,包括数据采集平台&计算平台&存储平台,这些可以自建也可以使用云计算服务;
中间部分两大块是中台的公共数据区,公共数据区包括数据仓库(数据湖) ,主要负责公共数据模型研发,还包括统一指标(标签)平台,负责把模型组织成可以对外服务的数据,例如数据指标、数据标签;
上层是数据应用服务层,主要将公共数据区的数据对外包装并提供服务,包括数据接口平台、多维查询平台,数据可视化平台、数据分析平台等。

另外,数据研发平台和数据管理平台贯穿始终,其中:
1)数据开发平台包括数据开发的各类工具组合,例如:数据管道工具(比如数据接入、数据导出)、模型设计工具、脚本开发工具、数据调度工具等。
2)数据管理平台包括统一元数据管理、数据质量管理、数据生命周期管理。针对数据全链路的数据管理,保证数据中台可以监控数据链路中的数据流向、数据使用效果、数据生命周期,以衡量数据的价值与成本。

以上是数据中台的核心部分,数据中台的组成也可以更加丰富,比如包括:数据资产平台、算法平台等等。

数据中台架构与技术选型


在数据中台的建设中一定不要忽视的是与业务的衔接,因为数据来源于业务并最终应用于业务,在数据中台的建设中需要有一系列的流程制度明确与业务的充分衔接,以保障数据源&数据产出的质量。

2、数据中台技术选型参考

在搭建数据中台方面,基于开源技术的选型,尤其是Hadoop生态圈有非常多的选择,从数据整体流向来看各大层级的选型。

数据抽取层: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,也可以选择阿里、百度的一些开源控件。

数据中台架构与技术选型

在开源技术的选择里,我们看到各层里都有越来越多国内开源的工具(也充分体现了我们在大数据技术领域的进步)。除了以上列举的这些,整个Hadoop生态圈的技术选择非常多,可以结合自己的实际场景选择自己的架构,在选型层面可以参照的一些原则,比如:

是否有鲜活的成功案例,优先找自己类似业务场景;
接口的开放性,与其他组件的兼容性;
社区活跃性度&发展趋势。

当然,数据中台的选型不只是开源技术,开源本身也不是完美的,例如维护开发成本较高,升级迭代不好把控,通过开源技术去建立数据中台还是有一定研发门槛。

所以也有很多商业化的套件、以及基于云的数据组件可以选择,包括数据采集、处理、分析、数据可视化全过程,国内外有很多厂商都提供了丰富的选择。尤其在大数据可视化这块,国内有许多非常专业的商业套件。