架构说明

基础设施:包括内容是基于云原生的容器管理,包括数据存储、计算引擎、同步工具、定时任务调度等等,它是构建上层平台及应用的基础。 数据集成开发平台:包括数据探索、数据采集、数据开发、数据治理、数据服务等,使用到基础设施中的计算引擎、定时任务与调度等。 数据资产运营平台:元数据、血缘管理、搜索引擎、资产管理等。 数据湖:用于汇聚业务采集过来的数据,需要兼容各个类型的数据,存储原始数据ODS;包括关系型、大数据、MPP、图数据、时序数据等等,使用到基础设施中的存储等。 数据仓库/数据集市:基于数据湖,加上逻辑计算做数据的二次汇聚,最终产生有用的一些指标、维度等数据,使用到基础设施中的计算引擎、定时任务调度、存储等。 数据应用:基于数据仓库/数据集市甚至是数据湖的数据,做服务于具体业务的应用,比如BI报表、数据API、标签等应用。

整体架构几乎包含数据平台的大部分关键内容,其中每一项都是一个较大的子系统,以下挑选其中一些关键的点做详细的描述:

数据存储

针对不同数据类型和业务特点,采用高效的存储会比较符合实际应用。在后续针对不同行业会给出一些场景的解决方案。 首先是数据湖,数据湖主要是存储已有的业务数据,将其1:1同步过来(当然为了无差别同步,可能会增加一些字段用于标识是否同步等信息)。一般有2种不一样的建设模式,一种是采用一个大数据套件(hadoop+HDFS)存储所有的数据;一种是采用适合的多种数据库兼容多个模型。前者可能需要转换一些数据,见过只是用关系型或文档型数据库作为数据湖,期间将不兼容的数据类型都做了一些转换存储。后者需要对数据同步和开发做兼容,让上层平台感知不到下层使用多数据库存储。 其次是数据仓库/数据集市:简单理解数据集市是数据仓库的一个主题,其实都是针对业务设计的维度表和事实表。一个成熟的行业如金融、医疗、工业都会有一个标准模型涵盖主要的业务需求,而针对这个模型设计一个数据仓库,并将其不同业务模块分为不同数据集市是一种比较常见做法。当然,遇到不熟悉或者标准程度不够的行业,可以按照业务模块建立一个个数据集市,再通过相通部分合并成一个数据仓库。该部分一般会是很贴合业务,并且是一种OLAP类型的存储加快业务实时使用,常见存储包括MPP、elasticsearch等数据库。数据仓库/数据集市的数据是从数据湖提取,期间也会使用到数据同步、计算引擎、机器学习等工具对数据做二次加工。 题外话HATP:我们之所以要做数据中台的原因其实就是业务数据模型往往比较难以满足快速分析,也就是很早之前的OLTP和OLAP的区别。为了将业务数据做出分析价值,那么就需要将数据同步到分析性能较好的OLAP数据库或者做实时计算,为了兼容不同数据库之间的数据同步和开发,数据中台需要兼容多种数据采集工具。这时候会有一些新的方向,那就是HATP,开发出一种既兼容OLTP也兼容OLAP的数据库,也是近几年的方向。

数据采集

数据采集其实就是需要将业务数据同步到数据湖或者数据湖同步到数据仓库中,之所以要集中到数据湖一方面是为了不影响正常业务,一方面是为了上层应用方便管理。用于业务数据库可能不同,为了很好兼容同步,做到离线、准实时的同步,往往需要不同的同步工具,以下列举较为常见技术: 实时同步: 1)CDC:变化数据捕获 (Change Data Capture),这是一种几乎秒级的准实时同步,主要原理是监控数据库同步日志,做到准实时同步。但是该技术一般针对关系数据库,并且数据库有类似log日志支持,常见有canal(mysql)、OGG(oracle)、SqlServer等。可以结合kafka将数据同步到消息队列中,然后做消息消费处理到数据湖中。 2)流数据处理:针对并发量较大同时只需要保存计算结果的业务数据,可采用流数据处理。常见的工具:Kafka Streaming、Spark Streaming、Flink、Storm、Heron、Pulsar等。 3)日志采集:针对日志类的采集工具,如Flume、Logstas、Fluentd等。 4)消息队列:利用分布式系统之间的同步消息做消息获取。 5)业务改造:一种在无法通过以上方式获取到实时数据时采用通过业务改造方式将生成数据同步一份到集成平台、消息队列等来满足要求。 离线同步: 1)离线数据同步相对来说较为简单,也有现成工具几乎能兼容大部分数据库,比如DataX、kettle、Sqoop等。

数据开发

数据开发主要是数据应用的开发系统,包括数据探索、数据查询、机器学习、数据可视化。 1)数据探索:主要将探索数据源中的数据,自动生成元数据。 2)数据分析:通过SQL程序、Spark程序等方式将数据汇总到数据仓库中。 3)即席分析:通过可视化操作对数据做分析,如Hue、Spark NoteBook等 4)即席查询:通过BI工具如Tableau、superset等做报表 5)算法开发:利用机器学习生成模型,如Jupyter Notebook等 6)流数据处理和分析:处理流数据并将结果输出,比如Spark Streaming、Kafka Streaming、Storm或Flink等

DataOps

我们从架构图可以知道,数据流向是从业务系统到数据湖、数据湖到数据仓库、数据仓库到顶层应用,在这过程中我们可以看到利用到了一些数据采集、数据开发、模型设计等等技术,对于一个非技术出生的人,面对底层各种技术工具,同时还要考虑从测试环境到预发布环境到正式环境的操作上保持一致,这个困难度可想而知,因此就会出现数据流水线管理。 数据流水线管理是看能否开发一个平台,可以将数据从采集到应用过程中可视化管理,同时还可以一键发布到各个环境,避免出现人工操作的复杂度和失误。这个系统需要包括:数据开发工具、调度引擎、配置库、运营管理工具等。而这个平台可参照的方法论就是DataOps。 DataOps:一种面向流程的自动化方法,由分析和数据团队使用,旨在提高数据分析的质量并缩短数据分析的周期。包含:部署、运维、治理、可用、生产等功能,等同于数据管理中的DevOps。一般使用到的技术包括云架构、容器、实时和流处理、多分析引擎、集成的应用程序和数据管理、多租户和安全性、DevOps工具。它与数据中台的关系是为了强调提高数据分析的质量并缩短数据分析的周期,而数据中台是做整体数据管理,数据中台提供数据建设目标,而DataOps提供一条可实现路径。

云原生与数据中台

数据中台建设的一些难点

1)数据应用能力快速复用难 2)新大数据技术无法快速落地 3)多租户的数据安全问题 4)业务人员难以独立完成数据分析工作 5)分布式计算和高性能难以保证

利用云原生特点解决数据中台的难点

1)以容器化发布服务,解决数据共享和复用 2)实现新大数据技术的云原生组件,使其标准化配置和管理,快速落地 3)利用云平台多租户实现数据中台的数据安全 4)以容器化模式实现CI/CD流程,达到可快速复用和开发 5)利用云原生的可伸缩性,达到分布式计算和高性能

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: