新一代云数据平台架构演进之路
导读: 本文是由浙江数新网络有限公司为我们带来的《新一代云数据平台架构演进之路》的技术分享。
本次分享分为四个部分:
-
大数据发展回顾
-
云数据平台演进趋势
-
云数据平台技术架构
-
云数据平台实践案例
分享嘉宾|原攀峰 数新网络 CTO
编辑整理|邢朋彬 小波科技
出品社区|DataFun
01 /大数据发展回顾
数据平台是指提供数据集成、数据存储、数据管理、数据处理、数据分析、数据服务等数据全生命周期能力的软件平台。数据平台能够屏蔽底层大数据引擎的底层细节,降低数据建设和使用门槛,对外提供统一的服务平台,帮助企业实现数据驱动业务。下面我们将从不同发展阶段来介绍大数据平台的演化和大数据基础设施的演进过程。
1. 大数据平台的演化
随着技术的迭代更新,数据平台也在与时俱进、不断进化,回顾整个发展历程,大致可以分为三个阶段:
(1)传统数据时代:上一世纪 80 年代到 2000 年左右处于这一阶段。数据平台和计算平台由 Oracle、Teradata 等数据库厂商提供,数据应用以 BI 报表的应用为主,主要由 SAP、微策略等 BI 公司提供能力。
(2)大数据时代:从 2000 年以后就进入大数据时代。该阶段以 Hadoop 的诞生和推广为主,得到了广泛的发展和应用,各个厂商也以此为基础推出了自己公司的数据中台、数据平台等产品。在该阶段数据平台还是以企业内部使用场景为主。
(3)云数据时代:随着云计算技术的普及和发展,大数据平台也随之进入了云数据时代。国外诞生了诸如 Redshift、Snowflake、Databricks 等云数据平台公司,国内以阿里为例,在阿里云推出 Max Compute、PAI、EMR 等云上计算引擎,以及御膳房电商数据开放平台、DataWorks 云数据开发平台等产品。
数新网络是在云数据时代背景下孕育而生,公司的宗旨是为客户提供全栈式的大数据平台和服务能力。上图中最右侧部分是数新网络提供的国产开源可控云数据平台 DataCyber,整体基于开源技术底座,自底向上依次提供了大数据计算存储引擎、云数据平台、面向垂直行业的数据中台、以及应用层的轻量化分析套件、应用市场等能力。
2. 大数据基础设施的演进
通过回顾数据平台的发展和演化历程,可以总结出大数据基础设施演进的四个技术阶段。
(1)数据仓库阶段:以 OLAP、BI 报表分析为主。
(2)数据平台阶段:大规模数据存储和计算,主要为批处理计算,同时结合大量在线服务的形式。
(3)数据中台阶段:以阿里为代表提出数据中台的理念,基于数据平台,结合数据标准、数据体系、组织变革机制,构成整个数据中台能力。
(4)云数据平台阶段(数据云):以云数仓为代表,典型特点是支持多租户的资源弹性伸缩和按量计费,由此发展出现流批一体、湖仓一体、数智一体、云原生、存算分离、云原生、开源开放等技术方向。
云数据平台的定义:也称为云数据仓库,是基于云计算技术、支持多租户的数据平台技术和产品,为用户提供海量数据挖掘和分析服务。我们理解,云数据平台更多指的是一种现代化的数据架构,其部署模式可以部署在本地数据中心、云上或混合云等多种环境。
--
02/云数据平台演进趋势
在介绍云数据平台的演进趋势之前,我们先回顾一下大数据平台技术架构的演进过程。主要分为四个阶段:共享存储架构、大规模并行处理、SQL-ON-Hadoop、云原生架构。每个阶段都有各自的技术特点,也是适应当时环境而产生的。
(1)第一代架构:以共享存储的架构为代表(share storage),支持的节点很少,扩展困难,只能支撑报表分析的场景为主。
(2)第二代架构:以大规模并行处理 MPP 架构为代表(share nothing),节点规模能够达到百级,能够处理的数据规模得到了一定提升,但仍存在限制。
(3)第三代架构:以 Hadoop、Spark 为代表,基于分布式的存储、分布式的资源调度,获得了更大规模的集群规模及数据处理规模。
(4)第四代架构:云原生架构,在新的网络传输速度背景下,基于统一的分布式存储、数据仓库、数据湖技术,支持多种类型计算引擎,从而满足更多分析场景的需求。
下面将围绕云原生架构,介绍云数据平台的几个重点技术演进方向。
1. 云数据平台演进趋势:多元引擎
在云计算+大数据的背景下,无论是存储引擎,还是计算引擎、实时分析引擎,都呈现出多元化的趋势。
(1)存储引擎:云上存储如 S3、OSS 发展迅速,私有云和公有云长期并存,因此本地存储、云上存储也将长期并存。
(2)流批计算引擎:经过多年的迭代演进,Spark 和 Flink 逐渐成为企业级主流计算框架,目前呈现出擅长不同场景的态势:Spark 擅长高吞吐量的计算,以及机器学习、图计算等场景;而 Flink 则擅长实时性要求高、流批一体等场景;不同企业的选择也不尽相同。
(3)实时分析引擎:以 MPP 架构为例,近年来不断涌现新的 MPP 查询引擎、MPP 数据库,每个引擎都有各自擅长的场景,并处于快速发展和升级中,因此,各个企业的选择差异较大。
基于大数据引擎多元化的这一趋势,云数据平台需要能够适配支持多种类型的计算和存储引擎。
2. 云数据平台演进趋势:流批一体
第二个演进趋势是实时化以及流批一体。实时处理的需求在广泛的行业都有普遍诉求,尤其是电商、物联网等。
实时数据架构最为经典的是 Lambda 架构和 Kappa 架构,以及由这两种架构衍生的一些混合架构方案。以目前的技术发展来看,很难做到统一到一种架构。因此,我们需要的是根据不同的场景,选择最为合适的实时数据架构。
(1)Lambda 架构的核心思想是提供流处理和批处理两种处理链路,从而发挥流处理和批处理的优势,通过批处理提供全面、准确的数据,通过流处理提供低延迟的数据,从而达到平衡延迟、吞吐量和容错性的目的。为了满足下游的即席查询,批处理和流处理的结果会进行合并。它适用于已有完备的离线数仓平台,实时计算较少的场景。
(2)Kappa 架构的核心思想是通过改进流计算系统来解决数据全量处理的问题,使得实时计算和批处理过程使用同一套代码。优势在于统一了流批数据逻辑,但受限于处理性能,适用于以实时计算为主,全量数据吞吐量可控的场景。
3. 云数据平台演进趋势:湖仓一体
第三个演进趋势是湖仓一体。数据仓库和数据湖的介绍和对比,这里不再详细展开,在企业发展的不同阶段,需要做到兼顾数据仓库和数据湖的优势,达到更好的数据管理和使用能力。在湖仓分体阶段,本质上数据是没有打通的,是存在壁垒的。而湖仓一体阶段的核心是数据统一存储,湖仓共享同一份数据进行计算或者分析。所以湖仓一体架构可以更加灵活的支持各种分析场景、机器学习、BI 报表、推荐算法等。
目前主流的湖仓一体方案大致分为两大类:
(1)在数据仓库上支持数据湖(左右结构):一般是通过在数仓中建外部表来实现,解决数据仓库如何更加灵活,以数仓为核心,支持访问数据湖。代表厂商有 Snowflake 等。
(2)在数据湖中支持数仓能力(上下结构):一般是以数据湖存储为基础,在数据湖之上构建数据仓库的服务层,强化数据治理和数据服务的提供。代表厂商是 Databricks 等。
这两种方案本身没有优劣之分,需要企业结合自身的技术栈和数据需求,选择适合企业现状和未来规划。
4. 云数据平台演进趋势:云原生、存算分离
**第四个演进趋势是云原生、存算分离。**Hadoop 大数据处理框架在长期的发展中一直是存算耦合的方式,在当下企业数据中心网络进入万兆、十万兆带宽,数据规模增长显著高于数据计算需求的背景下,导致存算资源很难进行合理分配,存算耦合的优势变得越来越弱。另外,数据湖、云原生、对象存储等技术的发展,也都推动了企业大数据基础设施朝着存算分离的架构方向演进。
目前主流的存算分离架构包含以下两种:
(1)基于 Hadoop 的存算分离架构:将 Yarn 集群和 HDFS 集群分别部署两个集群,从而实现存储与资源管理的解耦,这种方式增加了一种额外的运维负担、以及本地读的性能损失,但是根据相关企业的实践经验来看,损失可控,对于关注大数据平台成本、同时以私有云为主的场景下,是可以采用这种方案的。
(2)云原生存算分离架构:该架构优势在于资源弹性化、数据云上化。在该架构下,存储集群、资源调度、计算引擎是高度解耦的,底层存储可以是 HDFS,也可以是 S3 协议实现等;资源调度则完全拥抱 K8S,计算引擎可以支持多种主流引擎。
5. 云数据平台演进趋势:混合云、数据云
第五个演进趋势是多云、混合云、数据云。对于企业来说,数据中心同时在公有云、私有云部署越来越成为常态,在此背景下要求云数据平台具有同时管理本地机房数据和云上数据的能力,达到基于一套平台对不同数据进行管理的效果,并且要求云数据平台具有跨云数据管理的能力。这也必然产生企业之间、企业内部的跨云数据流动问题,需要有相应的机制进行安全保障。例如,隐私计算技术用于解决不同企业之间的数据平台之间的数据安全流动。
--
03/云数据平台技术架构
以上介绍了云数据平台的技术演进趋势,下面将为大家分享现代化云数据平台的典型技术架构。
1. 总体架构设计
上图所示是一个典型的云数据平台总体技术架构,自底向上依次分为几部分构成:
(1)数据源:平台支持多种类型的结构化数据、半结构化数据、非结构化数据。
(2)湖仓存储引擎:提供大数据统一存储能力,支持 HDFS 和对象存储两种分布式存储系统,支持数据仓库、数据湖的主流存储格式,支持针对数据湖场景进行查询加速。
(3)资源调度框架:支持 Yarn 和 K8S 两种分布式资源调度能力,能够同时支持存算耦合、存算分离的数据架构,覆盖传统大数据集群资源调度、云原生弹性资源调度的场景。
(4)计算分析引擎:支持 Hive/Flink/Spark 等流批引擎、TensorFlow 等机器学习引擎、TSDB/Neo4j 等专用计算引擎;支持 GaussDB/StarRocks 等 MPP 分析引擎、Presto/Impala 等联邦查询引擎;支持离线数仓、实时数仓、湖仓一体等开发场景。多元异构引擎通过 Hive 元数据作为元数据标准实现元数据打通和统一管理。
(5)云数据操作系统内核:提供通用的技术服务组件,衔接底层大数据引擎和上层数据开发治理平台,这里重点展示了几个最为核心的组件:统一元数据系统、统一引擎接入网关、统一任务调度系统、数据集成系统、跨网传输服务;其中,跨网传输服务是专门用于解决混合云等多云场景下数据高速、安全流通的基础服务,例如,隐私计算场景下的密态数据传输。
(6)数据开发治理平台:围绕数据的采集、开发、运维、管理、服务、质量、安全等全生命周期,提供一站式全链路的数据开发和服务平台。
(7)平台管理:整个平台的支撑系统,包含租户、账号、权限、项目、资源等基础能力,通常由一个多租户技术组件来承载实现。
限于篇幅原因,下面将主要和大家分享统一元数据系统、统一调度系统、数据集成系统这几个核心技术组件的架构实现。
2. 核心技术组件---统一元数据系统
为了能够适用于多元异构的大数据引擎组件,统一元数据服务支持两种能力:
第一种是与 Hive Metastore 实现打通,支持 Hive 元数据,通过 Hive 元数据为计算分析引擎提供元数据管理能力。
第二种是扩展支持更广范围数据源的元数据管理能力,基于计算引擎的自定义 Catalog 扩展机制,为 Spark/Flink 等引擎提供元数据能力。
(1)元数据服务管理
基于业界开源的元数据标准提供元数据能力,主要体现在与 Hive Metastore 进行交互,实现对 Flink、Spark 等计算引擎的管理。通过元数据接口实现多元异构系统的统一元数据存储和管理,实现外界元数据主动发现、多计算引擎元数据互通、跨多源计算。
(2)元数据权限管理
其核心能力主要包括:元数据权限控制、统一数据权限、角色权限配置、访问日志审计等。
(3)元数据治理
其核心能力主要包括:湖表管理与优化、数据生命周期管理、数据血缘、存储分析与优化等。
3. 核心技术组件---统一调度系统
调度系统主要分为两部分:Coordinator 集群和 Worker 集群。
(1)Coordinator 集群(调度器)
整个调度系统的大脑,主要职责包括:作业调度、资源调度、作业实例生成以及作业实例下发、对外提供服务 API 等。技术架构关注点:高稳定性、高可用性、高并发。
(2)Worker 集群(执行器)
主要职责包括:负责作业的实际执行过程,可以是本地执行,也可以是提交到远端执行;技术上核心关注多种类型任务的适配性、扩展性、资源隔离性等方面。
从功能上,需要覆盖不同类型的作业,多种周期调度,灵活的依赖关系,补数据、断点重跑等完备的调度功能;从性能和可用性上,调度器和执行器需要满足分布式无中心的设计,能够实现水平扩展和故障转移。
值得特别说明的是,在超大规模作业调度的场景下,需要进行技术架构的进一步升级,包括通过按租户进行 Coordinator 集群水平扩展、调度元数据分库存储等技术手段实现调度系统的高可用和稳定性。
4. 核心技术组件---数据集成系统
数据集成系统的核心功能是实现异构数据源之间数据的高速集成,目前主流的数据集成采用 Spark、Flink 等分布式计算引擎实现数据的高效集成。
(1)在功能方面,能够支持批量同步、流式同步、全量同步、增量同步等场景。
(2)在架构方面,由于采用的是分布式计算引擎,能够根据数据规模决定计算资源,具有较好的水平扩展能力。
(3)在网络方面,需要能够针对云上、混合云的复杂网络场景,解决跨网段的传输能力。
5. 关键技术要点总结
通过以上介绍,相信大家对数新网络云数据平台的技术架构也有了一定的了解,其关键技术点主要是:异构引擎计算、统一元数据系统、统一调度系统、数据集成系统和一体化架构。
--
04/云数据平台实践案例
1. 工业制造数据开发治理平台
该案例是面向产业生态建设的客户,其主要以数据为驱动力,加强企业的设计研发、生产制造、市场服务等,并且对企业数据资产进行全面工具化管理,针对合同、制造、适航、绩效等七大业务场景提供数据服务,提升企业生产、管理、运营的效率。
数新网络根据客户的需求场景,为其量身打造了流批一体架构的一站式大数据开发平台。通过异构数据采集、流批一体计算、数据服务、数据应用等功能一站式支持客户的各个场景,大大提升了客户的生产效率。
该解决方案是基于数新网络自主研发的云数据平台(CyberMeta)来实现的,该平台是高度集成、一站式的全链路平台,能够根据客户的业务场景和数据架构输出定制化的解决方案,例如离线数仓、实时数仓、流批一体数仓、湖仓一体等方案。
--
05/问答环节
Q1:怎么实现无中心化?
A1:该问题是基于调度系统的问答。集群去中心化设计的关键点在于如何设计合理的数据分片策略。以调度系统为例,调度系统的元数据是存储在 Database 中的,可以直接基于 Database 做业务元数据的分片,如不同节点负责拉取和处理不同租户或项目的作业调度,根据业务场景选择合适的分片逻辑。
Q2:如何实现跨不同 VPC 的打通?支持哪些云?
A2:跨不同 VPC 打通需要基于云厂商提供的 VPC 网络打通方案来实现,并且云上部署的大数据产品支持的网络部署模式也不完全相同。因此,需要结合大数据引擎的部署情况以及云厂商对 VPC 网络通道方案进行合理的技术方案设计与实现。
Q3:具体介绍下统一元数据服务包含哪些功能?
A3:元数据服务核心提供两个能力:一是 构建统一的元数据服务,通过元数据主动发现与采集,实现元数据统一存储,提供统一的元数据服务,实现存储、计算和服务的全链路元数据管理能力;二是提供元数据产品化的能力,包括数据资产管理、元数据权限管理、元数据治理等能力。
Q4:整体平台的云原生程度如何,部署架构是怎样的?
A4:数新网络提供的云数据平台采用的是两种技术路线并行:一是传统的(非原生的)技术架构;二是云原生技术模型,基于存算分离的架构实现。两种技术架构主要是适用于不同的客户:对于追求稳定并且资源不敏感的用户,我们会提供非原生的技术架构,例如通过 Hadoop+Spark/Flink 实现数据的存储、计算;对于资源敏感且对云原生接受度高、业务场景关注资源弹性伸缩的客户,我们会选择云原生的技术架构提供服务。目前部署上支持私有云部署、公有云部署、混合云部署。
Q5:混合云如何实现数据安全管理?
A5:在同一租户内部或者企业内部场景下,实现思路主要体现在以下几个方面:一是 通过 OpenLDAP+Kerberos+Ranger 等安全组件,支持存储的安全认证和管控;二是 基于统一的元数据服务,管理分布在混合云上的不同数据中心的元数据信息,并做好数据权限管理;三是 敏感数据做好数据加密、数据脱敏等安全加固,完成处理后做好计算结果的保护;四是在跨网传输时做好数据安全传输。
在跨租户场景下,数据安全管理核心需要保障不同租户的数据不被泄露的前提下进行安全使用。可以借助于可信数据沙箱、隐私计算等技术,基于底层的大数据引擎底座和大数据操作系统内核服务,构建多方之间的联合数据分析、联合建模预测等数据流通机制。
Q6:流批一体如何考虑交互式分析和机器学习?
A6:流批一体核心解决的是数据处理逻辑的统一性问题,目前主要采用的是基于Flink做流批一体实时数仓。交互式分析是针对高并发、低延时实时分析处理数据的场景,例如基于交互式分析引擎+ BI 工具对数据进行多维分析和业务探索,它与流批一体计算针对的是不同的数据处理场景。至于流批一体机器学习,业界有阿里开源的 Alink 机器学习平台,感兴趣的话可以了解一下。
Q7:目前 Delta Lake 生产上可用吗?
A7:目前这几个数据湖引擎都处在快速迭代更新阶段,因此不同版本的功能和稳定性会差异比较大。目前数新网络在数据湖引擎方向上面向客户输出的是 Hudi 和 Iceberg。
Q8:Yarn 和 K8S 可以一起使用吗?
A8:这两种资源调度框架是根据不同客户的场景选择使用哪种资源调度框架。例如客户已经有 Hadoop 集群,我们就可以构建 Spark/Flink on Yarn 的架构,直接采用 Yarn 资源进行调度。如果客户数据已上云或者已有 K8S 集群,那么我们会建议基于 K8S 构建大数据平台,Spark/Flink 也都可以不同的 K8S 部署模式。当然,也有少数客户同时有两种场景的需求,此时客户也是可以同时使用 Yarn 和 K8S 分别管理不同类型的计算资源集群。
Q9:Analysis Ready Schemas 具体指的是什么?
A9:这个概念是指通过主动元数据收集等方式,完成数据集 Dataset 的 Schema 收集及结构化、归一化,数据集成系统能够基于收集的 Schema 信息,方便地定义和配置数据同步任务,完成数据的提取、传输和加载。
Q10:数据开发是如何使用元数据服务进行开发的?
A10:元数据服务的使用场景很广泛,在数据开发场景中,例如 Web IDE 可以基于元数据查看库表信息、UDF 信息、实现表名称、表字段自动补全等功能。在数据管理场景中,可以基于元数据提供数据资产目录,例如支持数据地图、数据治理等功能的实现。尤其在数据治理场景下,还可以实现智能化的能力,例如通过元数据系统探查到上游表发生了变化,可以自动对下游任务进行告警,甚至是自动化处理等。
Q11:大数据存储组件也云化了吗?
A11:以数新网络的产品为例,不同的客户采用不同的存储方案,有些客户是云化的,有些客户是本地的。云化的场景主要是在 S3 或者 OSS 中存储,本地的以 HDFS 存储为主。在混合云的场景下,数据存储还可能是同时包含云化和本地的。
Q12:如何理解湖仓共享同一份数据?
A12:具体可以分为两种场景:一是基于数据湖建仓,数据通过流式采集的方式汇集到数据湖中,基于湖数据进行分析、计算等。但随着数据体量的增大和企业不同阶段的发展,数据管理、标准化、规范化的诉求也不断增加,此时结合湖仓一体的优势,在数据湖的基础上构建数据仓库,以更好的实现数据的管理和处理;二是在完备数仓的基础上打通数据湖的能力,该场景不同于湖上建仓的上下分层的结构,而是左右分层的结构,通过外表等机制支持湖和仓的打通,该场景在严格意义上讲并没有完全做到数据集中化存储一份。
Q13:新一代云数据平台等同于云原生数据湖吗?
A13:不完全等同。新一代云数据平台体现在很多方面,云原生只是其中一个方面,还包括多云、混合云、多元异构引擎、流批一体、湖仓一体等方面。云原生数据湖只是云数据平台的一种技术架构和实现路径。
Q14:Spark/Flink 上云是用的什么技术?
A14:Spark/Flink 支持多种 K8S 部署模式,包括 Standalone、Native、Operator 等部署模式,可以重点关注 Native 和 Operator 模式,能够方便的支持动态的资源伸缩等能力。
Q15:介绍一下智能调度方案?
A15:调度智能化是一个重要方向。举两个例子,一是基于任务运行的历史信息,实现任务调度策略、任务计算资源的优化,以保证整个平台的任务调度稳定性和高性能。二是基于统一元数据服务,实现调度系统的智能化告警,甚至是任务的自动化问题修复,以此提升数据平台的智能化和自动化运维能力。
Q16:StarRocks 和 Doris 是同一个产品吗?
A16:它们都属于 MPP 数据库,二者从功能和定位上有很大相似之处,但并不是同一个产品。Doris 是在 Apache 基金会维护,基于 Apache License 开源的 MPP 数据库。StarRocks 是基于 Elastic License 开源的 MPP 数据库,与国内几个云厂商都有合作。目前数新网络和 StarRocks 公司已经签署战略合作协议,双方在产品集成、性能压测及优化等方向均有合作。
今天的分享就到这里,谢谢大家。