建信金科陈晓新:20000节点数仓集群在大型商业银行的落地实践
本文根据陈晓新在【第十三届中国数据库技术大会(DTCC2022)】线上演讲内容整理而成。
讲师介绍
陈晓新,现任建信金科金融科技基础技术中心龙趺MPP DB产品负责人,在MPP数据库的规划、建设、运维方面拥有丰富的实践经验。
内容摘要:建信金科联合HashData等合作伙伴打造的龙趺MPP DB数据库,采用元数据、计算、存储三层分离的架构,在确保高性能计算能力的同时,还具备高并发性、高扩展性,以及灵活的资源动态调度和故障自愈能力。
本文主要介绍龙趺MPP DB数据库的架构设计和核心功能特性以及落地实践效果和未来技术发展规划。
演讲正文:
研发背景
建信金科在这二十几年的数仓建设过程中,取得了很大的成果,但同时也遇到了很多的挑战。
传统MPP数据库,使用的是存算一体的私有部署架构。随着数据量的日益增长,这种架构面临以下几个问题:
1. 传统物理机、虚拟机的部署架构,资源和集群运维管控难度大;
2. 上层应用烟囱式的部署架构,导致严重数据孤岛;
3. 每个集群都存储大量冗余数据,服务器资源消耗严重;
4. 集群间需要大量数据复制,消耗大量网络、ETL等资源。
为解决传统架构MPP数据库使用中的“痛点”,建信金科基础技术中心大数据智能工程部开发了龙趺MPP DB。
龙趺MPP DB使用云原生和存算分离的架构设计。一方面,通过管理控制台对接IaaS资源,实现集群的一键创建、启停、升级、扩缩容和故障自愈等功能。
另一方面,元数据层和存储层独立剥离,实现全集群的数据共享,消除数据冗余和数据孤岛;而中间的无状态计算层,其计算和并发能力能够线性扩展,从而实现了集群规模从100台到20000台的突破性发展。
2020年3月份,龙趺MPP DB第一套计算集群在建行上线。到2022年5月份,节点数量超过了20000个。截止目前,龙趺MPP DB集群规模已经超过27000个节点,数据量达到18 PB,每天运行上百万作业,日均运行SQL达到千万级别。
上图为龙趺MPP DB的监控大屏图。龙趺MPP DB上线至今,先后经历四十余次版本迭代,目前运营的版本是3.10.8。从图中可以看出,系统健康状态、集群规模、资源使用率、 连接数等信息一目了然。
龙趺MPP DB核心技术特性
龙趺MPP DB逻辑架构可以分成两个模块,一个是管理模块,一个是用户模块。管理模块主要负责基础资源的管理、集群创建、启停、扩缩容和监控告警等服务。用户模块分为三层,分别是元数据层、计算层和共享存储层。
基于云原生架构的优势,龙趺MPP DB在保留传统MPP数据库高性能计算能力的前提下,同时具备高并发、高扩展性、资源动态伸缩、故障自愈等能力,为超大规模数据集群的建设提供了基础。
上图为龙趺MPP DB管理控制台的UI界面。所有的资源创建、销毁、扩缩容、升级、故障自愈,以及监控等操作,都这可以在控制台上完成。
上图是龙趺MPP DB元数据集群架构,相比传统MPP数据库,龙趺MPP DB的元数据服务分为调度层、无状态服务层、元数据持久层三层。元数据使用ETCD作为实现调度和服务发现功能,使用FDB作为元数据持久化存储层。中间的无状态服务层负责接收和处理所有计算集群的元数据请求。每一层服务都可以根据负载需求进行扩容,以提升服务能力。
用户模块中间的计算层则是实现了完全的无状态计算服务。在计算层里,每个计算集群就是一个独立计算资源的数据库服务,用户可以按需对计算集群进行创建、删除、扩缩容等操作。集群间的资源是完全隔离的,作业可以在已有的计算集群间进行灵活实时的动态调配。
如果一套计算集群的并发或者扩展能力不足以满足应用的要求,用户可以通过新建集群的方式来实现并发能力的线性扩展。
最底层的共享存储层,龙趺MPP DB采用了对象存储来持久化存储用户数据。通过对象存储,数据可以一次写入,所有计算集群共享使用。通过利用对象存储的海量文件存储、高并发读写、数据高可用性和持久性等能力,龙趺MPP DB满足了应用海量数据存取、高作业并发、数据安全等方面的需求。
除了上面介绍了几个核心模块功能,龙趺MPP DB还集成了GIS、Python等组件,支持SQL分析、机器学习、时空分析等多种分析形式。同时,通过丰富的外部计算引擎连接器功能实现,龙趺MPP DB可以支持和Hive、Spark、Flink、Kafka等第三方计算框架与引擎的高效数据交互和计算交互,进而实现数据联邦乃至计算联邦。
在国产化安全可控方面,龙趺MPP DB完成了和市场上主流国产服务器、芯片、操作系统、存储软件以及云平台的适配和认证。可以说,龙趺MPP DB 能够满足绝大部分信创项目对于数据仓库的建设要求。
湖仓一体是目前数据库技术发展的热门方向,龙趺MPP DB也提供了完善的湖仓一体的解决方案:
以上图为例,假设数据湖建设在Hadoop上,存储和管理各种形态的业务原始数据,一方面为数据仓库供数,另一方面支撑数据科学实验和实时查询分析。龙趺MPP通过连接器,实现了对数据湖数据的直接访问,支撑上层报表、查询、数据分析等应用,打破了湖仓之间的数据壁垒。
同时MPP还提供了和Spark数据交互的高效接口。通过使用连接器,Spark执行数据计算处理后,将数据按约定的格式写入到共享存储中,同时更新MPP的元数据信息,MPP可以直接使用Spark写入数据。Spark同样可以直接访问MPP写入的数据,不需要重新加载,直接进行机器学习相关的业务处理。
龙趺MPP DB核心技术总结
1. 架构云原生:融合云计算,架构上实现了存储、计算、元数据分离,摆脱了传统MPP数据库的各种架构限制和制约。
2. 计算存储分离:共享统一的元数据和数据存储,以增加计算集群的方式,横向扩展集群并发计算能力,突破传统MPP并发限制。
3. 应用松耦合:数据库资源和应用解耦,根据计算集群的工作负载和变化的应用需求,灵活、动态调配计算集群。
4. 分析多样化:在MPP并行计算架构上,集成GIS、Python等组件,支持SQL分析、机器学习、时空分析等多种分析形式。
5. 湖仓一体化:统一数据存储,形成企业级数据视图。统一元数据管理,严格事务一致性,以融合架构支持湖、仓平台建设。
6. 自愈高可用:计算集群节点无状态,数据保存在共享存储上,没有Mirror节点,实现分钟级新节点恢复。
7. 秒级扩缩容:数据保存在共享存储上,使用一致性Hash 分布方案,避免新增/减少节点数据迁移。
8. 技术自主可控:自主开发,支持鲲鹏、海光服务器,麒麟等国产化操作系统,平台软件实现自主可控。
基于龙趺MPP DB,建信金科成功实现了超大规模数仓的建设与商用,达到了计算与存储分离、数据不冗余、一键式部署、一键式运维等效果。
相比传统MPP架构的数据库,龙趺MPP DB在性能方面,可以减少作业压力20%以上;
在成本方面,龙趺MPP DB大幅降低了数据冗余,减少数据存储需求30%,节省硬件资源30%以上;
在运维方面,龙趺MPP DB实现了传统MPP数据库所无法做到的动态扩缩容、故障自愈等功能,运维效率提升10倍以上。
龙趺MPP DB未来技术展望
展望未来,MPP DB将会通过大数据计算与存储技术,实现以下功能:
1. 具备跨区域的高可用部署和灾备恢复能力,数据多区域多版本存储,服务不中断,数据不丢失;
2. 多租户管理能力,元数据服务具备负载管控、故障隔离的能力,全资源多维度服务弹性伸缩;
3. 存储和管理结构化/非结构化/半结构化数据,涵盖主流开放式存储格式和数据湖格式;
4. 外部计算引擎能够并行高效地查询和使用龙趺MPP的数据,并将结果存回库内;
5. 接入丰富外部数据源,利用龙趺MPP计算能力满足外部数据计算乃至联邦计算的需求;
6. 对外能够提供SQL、AI、图、时序、流等计算能力,全面覆盖上层大数据应用需求。