HashData云数仓元数据服务设计及实现

HashData云数仓元数据服务设计及实现_第1张图片
元数据是数据库系统中描述对象的数据,相当于数据使用的“说明书”,是决定数据库性能的重要抓手。
在大数据时代,海量的数据规模和复杂的数据类型,意味着对元数据处理提出了更高的要求。
HashData云数仓作为一款面向多种数据分析场景的高性能分析型数据库,采用元数据、计算和存储三者分离的架构,能够更好地适应跨集群、跨中心以及跨云中心的数据访问。
在提供高性能数据仓库业务的同时,HashData拥有更好的资源配置能力,并且通过元数据服务的分离和共享,让所有的数据集群系统保证数据的一致性。
传统MPP数据库使用“痛点”
传统的Greenplum、Teradata等MPP 架构的数据库,存储、计算是紧耦合的,数据存储在本地系统,存储能力的扩展通过增加集群节点实现,这样会导致计算资源严重浪费,无法满足业务的发展。
在使用过程中,随着数据量的增长,传统MPP架构数据库每个集群的数据都保存在计算节点本地磁盘,集群之间的数据无法做到有效共享,形成“数据孤岛”现象。同时,大量数据拷贝操作,造成数据严重冗余。
当出现用户的计算需求大于单套节点的容量限制时,用户往往需要被迫去采用集群切割,然后再通过一些其他的技术进行同步。这样做一方面会增加流量负载,同时还会引起元数据的不一致,加剧“数据孤岛”现象。
传统数据库在进行动态扩容、缩容、升级、故障处理等操作时,需要把用户数据重新做一个resharding。但对分布式系统来说,元数据都是存储在本地的,所以任何一个节点要恢复或者扩容,都要拷贝一份元数据,会大幅增加停机时间。
此外,传统MPP 架构数据库,动辄几百台甚至上千台服务器的规模,系统运维工作量大。
HashData云数仓元数据服务设计及实现_第2张图片
HashData云数仓:基于共享存储的元数据服务
HashData 云数仓元数据设计初衷,是希望能够为用户提供统一的共享存储解决方案。
从整体架构来看,HashData元数据集群为计算集群提供管理服务,同时用户可以通过云管平台实现元数据集群操作。
依托对象存储服务,HashData 可以更加高效地在用户的核心的数据上面提供计算服务,能够有效提高MPP 架构集群的并发能力。
同时,相比传统MPP 架构,HashData 从物理层面直接实现资源隔离,可以更好地帮助用户把资源和应用类型进行互补。
为了做到在共享存储环境下,提供多套不同的计算资源的隔离,就需要提供统一的元数据的管理,这样可以方便不同的集群独立、准确、并发地去操作对象存储上的共享数据。
在这种情况下,HashData 云数仓对元数据进行了大量优化,包括存储服务、调度接入、云管平台等。
hashData元数据服务分成三个层次:一层是调度层,一层是无状态服务。还有一层是元数据持久层。
HashData云数仓元数据服务设计及实现_第3张图片
调度层主要解决两类问题。第一是帮助计算集群去找到元数据节点。调度层需要把元数据节点以及它的角色发布到ETCD ,然后计算集群通过订阅 ETCD 上这些角色位置的变更信息,它们可以自动地去找到更新的 catalog,为不同的角色提供了不同的服务。
计算集群在计算的应用层来通过服务发现找到服务对象,尽可能地避免所有的节点去访问同一个catalog。
调度层还具有服务负载均衡的功能。调度层在 catalog 上会同时就一个角色注册多个入口,又可以允许计算机去通过 catalog 推送给调度层的负载情况,避免某些 catalog 出现热点。
无状态服务层是一组能够互相通信,也会跟FDB ETCD 和计算集群通信的一组进程,这组进程主要作用就是回答计算集群的请求。
HashData的元数据服务通过全球可访问的分布式系统提供,负责数据持久化的对象存储通过RESTFUL接口提供数据访问能力,中间的计算层则实现了完全无状态化。
为避免出现“数据孤岛”和冗余,HashData采用共享存储架构,任何一个计算集群都可以去访问同一份数据,所有集群共享同一份元数据,彻底消除“数据孤岛”和冗余,确保数据的实时性和一致性。
由于采用云原生架构,HashData云数仓多个集群共享统一的元数据、统一的数据存储,集群间不竞争CPU、内存和IO资源,可以根据业务需求无限地创建集群。为了提高并发数量,只需要增加计算集群,来满足弹性、高并发的要求,代价显著降低。
同时,得益于存算分离的架构,HashData通过一致性哈希来避免数据重新逻辑分组,通过共享存储避免数据重新物理分布,可以实现集群的秒级自动扩缩容。整个过程中,包括master节点、segment节点在内的计算集群都是无状态的。
此外,HashData的计算集群没有存储任何的实体数据,所有的数据都是依托缓存系统来工作。
通过统一共享的元数据集群,HashData可以确保用户在管理数据资产的时候,元数据的 schema 和计算节点的状态是完全一致的。
除此之外,HashData的每个计算集群本质上又是完全相等的。从任何一个集群出发进行 SQL 查询或者数据计算,实际上都是完全等价的。在任何的时候,应用都可以把作业动态地调度到不同的集群上面,这样能够帮助用户安全、平滑实现应用在集群间的迁移。
HashData可以根据业务需求,动态地对数据仓库集群进行纵向伸缩和横向伸缩。同时,由于是完全托管的云服务,HashData数据仓库承担了所有的集群资源配置、数据库管理、持续监控、健康检查、错误恢复、高可用和扩缩容等纷繁复杂、极易出错的运维工作,让用户安心专注于业务分析上面。
目前,HashData已经在金融、电信、能源、交通、互联网等行业实现大规模商用。以某国有大型银行为例,HashData为超过20000节点提供数据分析服务,支持上百个业务场景。其中,元数据的节点每天处理约70 亿次请求。

你可能感兴趣的:(数据库)