首页 > 文章中心 > 正文

空间基础信息平台分布式数据库设计

空间基础信息平台分布式数据库设计

摘要:国家级国土空间基础信息平台采用“1个主中心+N个分中心”的分布式架构。为实现多数据中心数据深度融合计算,本文开展了国家级国土空间基础信息平台分布式空间数据库建设前期研究,提出了基于HBase的分布式空间数据库存储架构,开发了系统原型并进行了实验验证。实验结果显示,分布式空间数据库HBase在地域分布的情况下,可以稳定高效地完成计算分析任务,网络环境如果达到4.5Gbit/s(4.5千兆)以上,则不影响数据库集群的查询性能和计算集群的计算性能。该技术框架可有力支撑国家级国土空间基础信息平台的分布式建设模式。

关键词:国土空间基础平台;分布式;数据库;海量数据;HBase

0引言

国土空间基础信息平台按照“共建、共用、互联、共享”的原则,集成整合并统一管理各级各类国土空间数据信息,为统一行使全民所有自然资源资产所有者职责、统一行使所有国土空间用途管制和生态保护修复职责,提升国土空间治理体系和治理能力现代化水平,提供基础服务、数据服务、专题服务和业务应用服务,是国家重要的空间基础设施[1]。国家级国土空间基础信息平台采用“1个主中心+N个分中心”的分布式建设模式,如图1所示,数据物理分散、逻辑一体,通过平台集中展现、调度。当前,主中心和部分分中心主要通过数据服务集成的方式实现数据集成和共享,该种方式可以满足大多用户的日常空间数据浏览、查询、统计等基本需求,由于数据异构存储及数据服务方式本身的局限性,难以实现跨数据中心的数据深度融合计算。涉及多数据中心数据的全国国土空间规划纲要编制前期研究、执法督察、全国“三区三线”(指城镇空间、农业空间、生态空间三种类型空间所对应的区域,以及分别对应划定的城镇开发边界、耕地和永久基本田保护红线、生态保护红线三条控制线)划定成果的比对分析等复杂空间计算分析,目前,仍采用数据分中心数据库整库物理迁移到主数据中心统一集中计算分析的方式。为维护数据的现势性,该方式数据库迁移成本较高,因此,开展分布式数据库建设十分必要,通过对各数据中心数据进行统一的分布式存储管理,实现数据可以跨数据中心进行任何形式的高效融合计算。面向国家级海量空间数据的分布式存储、管理、计算的实际应用需求,本文提出了基于HBase分布式数据库存储架构。

1基于HBase的分布式存储和管理现状

近年来,分布式海量空间数据的存储和管理成为研究热点[2-3],HBase拥有高可靠性、高性能、可伸缩、实时读写的空间数据管理能力,成为分布式空间数据存储和管理的主流技术之一。HBase既支持多种数据格式存储,又具有较强的数据查询、读写与扩展能力,适用于需要实时读写、随机访问超大规模数据的场景[4]。已有的研究基于HBase开展了分布式空间数据的存储管理、计算等[5-9],相关的云企业和GIS企业也提出和研发了基于HBase的产品。华为云CloudTable提供基于HBase的分布式、可伸缩、全托管的NoSQL数据存储服务,集成OpenTSDB和GeoMesa并提供时序数据库和时空数据库功能,提供了毫秒级的随机读写能力,适用于海量结构化数据、半结构化数据、时序数据和时空位置数据的存储和查询应用,已广泛应用于物联网、车联网、金融、智慧城市、气象等海量数据存储和在线查询的场景[10]。阿里云推出的HBaseGanos是支持空间、时空、栅格、影像一体化管理的时空大数据引擎系统,系统集成GeoMesa和GeoServer,提供海量时空数据查询、分析、共享功能,已广泛应用于互联网出行、实时GIS、IoT等海量时空大数据存储、查询、分析与数据挖掘[11]。SuperMap发布SDX+引擎,该引擎主要支持UDBX、HBase、PostGIS、HDFS、MongoDB、Elasticsearch等存储数据库,其中,HBase数据库引擎支持多种数据格式和坐标,提供海量数据高并发、高效查询功能,具有高性能、可弹性伸缩及分布式特性,支持PB级大数据存储,同时满足千万级QPS并发,是分布式空间数据存储和管理的首选[12]。本文针对国家级国土空间基础信息平台“1个主中心+N个分中心”的分布式架构,提出基于HBase+GeoMesa的分布式数据库存储架构。HBase作为分布式数据库管理系统,负责数据库管理,GeoMesa作为空间数据库引擎,实现空间数据解析和空间索引。本文开发了系统原型,实现了ArcSDE数据库迁移和分布式数据库权限管理,并对关键技术进行验证。结果表明,利用该技术路线可实现跨数据中心的数据高效融合计算。

2总体设计

2.1数据库存储策略设计

2.1.1数据中心数据库设计考虑到数据中心之间的数据共享需求,本文按照“谁生产、谁负责”的原则,将各个数据中心数据库设计为联合的数据库集群,这有利于提升基于跨数据中心的空间大数据分析计算性能。联合的数据库集群设计前提是在国家级数据中心之间建立千兆甚至万兆级光纤网络,为分布式数据库提供数据传输支撑。2.1.2数据存储现势数据是指当前或近几年经常访问的空间数据,历史数据是指访问频次较低、年代久远的数据。现势数据和历史数据分开存储在不同的数据库集群中,有利于将优势的计算机资源(硬盘I/O、内存和CPU)分配给访问频次高、性能要求高的现势数据。为提供更高效的数据服务,相比历史数据,现势数据存储较多的副本。2.1.3计算机资源共用空间大数据的查询和计算等任务的性能瓶颈主要存在空间查询方面,纯粹的计算需求相对较少,但在很多场景下,仍然需要借助并行计算框架提高任务并行度。因此,本文采取数据库集群与计算集群共用计算机资源的设计策略,这样既可以满足任务并行计算需求和分布式数据库查询需求,又不会造成CPU等计算资源争用冲突。

2.2数据库逻辑架构设计

分布式数据库逻辑架构设计如图2所示,包括HDFS、HBase、ZooKeeper和数据客户端四个组成部分。HDFS负责存储数据实体文件;HBase负责分布式数据库管理;ZooKeeper作为分布式协调组件,协助HBase做分布式管理;数据客户端通过ZooKeeper连接HBase。2.2.1HBase客户端接口HBase客户端接口包括NativeJavaAPI、HBaseShell、Thrift、REST、Pig、Hive等。本设计方案采用GeoMesa作为空间数据库引擎,GeoMesa是基于NativeJavaAPI封装的HBase客户端,能够实现对HBase空间数据的访问。2.2.2ZooKeeperApacheZooKeeper是HBase集群的一个关键组件,主要作用是保证HBase集群只有一个HMaster节点,存储HBase数据库模式和数据库表的元数据,实时监控RegionServer的上线和下线信息,并实时通知给HMaster存储所有的Region寻址入口。2.2.3HBaseHBase服务端包括1个主服务器HMaster和多个Region服务器RegionServer。主服务器HMaster负责管理和维护HBase表的分区信息,维护Region服务器列表,分配Region,实现负载均衡。Region服务器RegionServer负责存储和维护分配的Region,处理客户端的读写请求。2.2.4HDFSHDFS包括NameNode、DataNode和SecondaryNameNode。NameNode主要用于协调集群中的数据存储,管理HDFS的名称空间和数据块映射的信息,配置文件副本策略和处理客户端的请求。DataNode用于存放具体数据块的节点,主要负责数据读写,定期向NameNode发送心跳。SecondaryNameNode辅助NameNode收集文件系统运行的状态信息,分担工作量。

2.3关键技术

2.3.1空间数据索引空间数据索引是空间数据库性能的关键。空间数据索引主要包括网格索引、四叉树索引、R树索引、Z索引等模型。本文采用Z索引技术通过GeoMesa构建空间数据库。Z索引以一条二维或三维空间填充曲线的点值作为关键字,表达经度、纬度和时间,并将数据记录存储在Key-Value数据库。二维Z索引的二阶曲线如3所示。对于二阶曲线,16个网格单元的地理编码可以用4个比特(xyxy)表达。以左上角的网格单元为例,x值是00,y值是11,Geohash值就是0101。在HBase数据库中,GeoMesa空间数据的Key-Value存储结构如图4所示。在图4中,Z3(x,y,t)利用8个字节存储空间数据索引,即Z索引;VALUE是存储空间数据实体数据的部分。2.3.2负载均衡HBase通过Region数量实现负载均衡。HBase提供全局计划、随机分配计划和批量启动分配计划三种负载均衡技术。全局计划是最常见的负载均衡,贯穿于整个集群的平衡运行期,以特定时间间隔执行负载均衡。随机分配计划适用于为新加入的RegionServer随机分配Region。批量启动分配计划应用于集群启动时,决定将Region分配到哪台机器。2.3.3读写分离通过以下两种方法提高数据库查询响应性能。(1)通过设置hbase.ipc.server.callqueue.read.ratio参数,为数据库读取设置较多的响应线程,优先处理读请求。(2)通过合理设置Key,使得Hbase把当前读取和写入的数据分配到不同的region,实现读写分离。

3系统部署

按照“1个主中心+N个分中心”的设计要求,数据库物理部署设计分为1个主中心和N个国家级分中心。数据库物理部署设计如图5所示。主中心部署HDFS集群和HBase集群,其中集群主节点1部署HDFS的NameNode、HBase的HMaster、ZooKeeper集群节点ZooKeeper1,以及HDFS的DataNode和HBase的RegionServer。N个分中心主要部署HDFS的DataNode和HBase的RegionServer。需要强调的是,1个分中心需要设立主节点2,部署ZooKeeper2和HDFS的SecondaryNameNode。另外1个分中心需要在1个节点上部署ZooKeeper3(图5已省略)。主中心和各个国家级分中心都可以通过ZooKeeper集群找到分布式数据库地址,将各自的数据存储到分布式数据库。每个数据保留多个副本,副本可存储在本中心的节点,也可存储在其他中心的节点。ZooKeeper集群的3个节点分别部署在主中心和2个分中心的服务器,HDFS的NameNode和SecondaryNameNode也部署在主中心和1个分中心的服务器,集群存储每个数据的多个副本。这样的多项设计策略可最大限度地保障数据库集群的鲁棒性,在1个中心失联或多个数据库集群节点宕机的情况下,仍然能保证数据库集群的正常运行和服务。根据现势数据和历史数据分开存储的存储策略,分布式数据库集群分为现势数据数据库集群和历史数据数据库集群,2个集群均采用图5的物理部署设计。其中,历史数据数据库集群分配的集群节点较少,现势数据数据库集群分配的集群节点较多,历史数据数据库集群节点同时作为现势数据数据库集群节点,这样可以最大限度地利用集群资源。为了避免集群互相干扰,历史数据数据库集群可采用Docker容器部署。

4实验测试

本文为验证基于HBase的分布式数据库存储架构的可行性,利用不同可用区的华为云服务器建立分布式存储环境,进行矢量数据的分布式空间运算应用案例测试。

4.1测试环境

测试环境基于华为云搭建,由1个主节点、2个分节点组成,HBase版本为2.0。主节点和分节点均配置8核、16GB内存、500G硬盘,网络为4.5千兆网。

4.2测试结果分析

该测试采用永久基本农田数据和土地利用数据,相关测试数据通过GeoMesaAPI、GeoToolsAPI实现从OracleArcSDE到Hbase的迁移。永久基本农田数据和土地利用数据均为面状数据,永久基本农田数据约包括1200万条记录,土地利用数据约包括1030万条记录。为验证地域对空间运算的影响,该实验分别利用华为云相同可用区和不同可用区模拟1个数据中心部署分布式数据库和多中心部署分布式数据库的情形,并在两种条件下执行基本农田数据和土地利用数据的求交分析,记录分析计算的完成耗时。实验结果显示,两个图层的相交结果约为1460万条记录。相同可用区求交耗时51分钟,不同可用区耗时52分钟,差异几乎可以忽略。该结果表明,基于HBase的分布式数据库集群节点在地域分布条件下,可以准确高效地完成分析计算任务,网络环境如果达到4.5Gbit/s(4.5千兆)以上,则不影响数据库集群的查询性能和计算集群的计算性能。考虑未来分布式国土空间基础信息平台运行的高效稳定,本文建议各中心采用万兆网相连。

5结束语

面向国家级海量空间数据分布式存储、管理、计算的实际应用需求,本文提出基于HBase+GeoMesa的分布式数据库存储架构,并通过系统原型进行了实验,结果验证了本文提出的技术框架可行性。该技术路线可以解决国家级国土空间基础信息平台“1个主中心+N个分中心”数据跨中心难以深度融合计算的问题,实现统一的海量空间数据的高效存储、计算、管理,为全国各级国土空间基础信息平台分布式存储和计算设提供技术实现途径。未来研究考虑进一步优化空间数据库索引,采用更高效的空间索引提升查询性能,并将分布式数据库与并行计算框架Spark进行对接,进一步提升空间分析计算的效率。

作者:李治君 周俊杰 范延平 邓颂平 单位: 自然资源部国土空间大数据工程技术创新中心 自然资源部信息中心