李胜友,杨秋莲,孙忠芳
(天津市测绘院,天津 300381)
基于云平台Hadoop的三维虚拟地球数据组织形式
李胜友∗,杨秋莲,孙忠芳
(天津市测绘院,天津 300381)
云计算的发展推动了整个行业的进步,同时也给GIS的发展提供了非常大的机会。本文针对开源云平台Hadoop搭建了一个小型的私有云,利用Hadoop HBase存储键值对数据的优势,将三维虚拟地球GeoGlobe格式数据存储于HBase之上,实现了三维GIS的金字塔状瓦片数据存储到HBase中,最后给出了具体的实现方案。
云计算;Hadoop;HBase;3D GIS;金字塔数据组织;GIS服务器
随着2006年Google首席执行官埃里克.施密特首次提出“云计算”概念以来,“云计算”的推广和使用就得到了前所未有的繁荣,亚马逊的Amazon的弹性计算云(EC2)、Google的云计算系统、微软公司的Windows Azure以及IBM的“蓝云”等都在此舞台上竞相争艳。
云计算的各项功能和便利同样刺激和壮大了GIS的技术力量,云计算的各种特征可以用于支撑地理空间信息的各要素,包括建模、存储、处理等等,从而改变用户传统的GIS应用方法和建设模式,以一种更加友好的方式,高效率、低成本地使用地理信息资源。
国外GIS大公司如Esri已经涉及云GIS领域。Esri目前发展比较成熟的云GIS产品都是使用了公有云GIS[1],包括ArcGIS.COM、ArcGIS Apps/APIs以及ArcGIS Amazon,基于ArcGIS的公共云平台,用户能够免费使用大量的高质量地图服务和任务服务,基于这些GIS资源用户可以创建自己的应用工具,并共享自己的GIS成果;而云计算先驱Google公司推出的Google Maps及Google Earth则将云计算的使用完全推广到行业外。利用后台强劲的GFS及BigTable服务器,Google Maps可以提供含有政区和交通以及商业信息的矢量地图、不同分辨率的卫星照片和可以用来显示地形和等高线地形视图,Google Earth则把卫星图片、航空照相和GIS数据存储在云端服务器,利用云端服务器强大的分布式搜索能力,快速准确地为全球几十亿用户提供3D GIS服务。
2.1 开源云计算平台Hadoop
Hadoop采用分布式系统基础架构,由Apache基金会所开发,Hadoop为应用程序透明的提供了一组稳定/可靠的接口和数据处理。Hadoop生态系统图,如图1所示:
图1 Hadoop生态系统图
Hadoop三个核心模块分别为HDFS、MapReduce和HBase。
HDFS是一个分布式文件系统,是Hadoop的基础,设计思想源于Google的GFS,其架构如图2所示:
图2 HDFS架构图
HDFS采用了数据元数据和数据本身分散存储的形式,主节点存储数据的元信息,数据节点存储了数据本身,这种集中调控、分散任务的形式大大提高了海量数据的存取效率,另外使用数据块多副本存储的设计思想保证了数据的安全性和高效性。
MapReduce是Hadoop的灵魂,如图3所示:
图3 MapReduce流程图
MapReduce是一种分布式计算模式,将任务进行两步分解,中间还有一个shuffle过程,不仅可以达到分布式计算的效果,还可以在任务中期进行动态的任务调配。MapReduce的出现解决了海量数据计算的难题,使得对大数据的分析和处理不再成为数据库的瓶颈。
HBase是一个分布式的、面向列的开源数据库,在Hadoop之上提供了类似于BigTable的能力,HBase适于存储非结构化的数据,它的架构如图4所示:
图4 HBase系统架构
HBase的服务器体系结构遵从简单的主从服务器架构,它由HRegion服务器(HRegion Server)群和HBase Master服务器构成。HBase Master服务器负责管理所有的HRegion服务器,而HBase中所有的服务器都是通过Zookeeper来协调,并处理HBase服务器运行期间可能遇到的错误的。
HBase运行于HDFS分布式文件系统之上,使用Hadoop的MapReduce计算模型来并行处理大规模数据,这正是别的数据库系统性能与它无法相比的原因。
2.2 三维数字地球瓦片金字塔结构
金字塔状数据组织在GIS中非常常见,它充分利用了人体视觉和计算机数据结构技术,将不同层次的地理信息数据以分级的形式进行存取。如图5所示:
图5 金字塔状数据组织形式
在建立面向全球多尺度层次四叉树空间索引过程时,首先分别对东、西半球建立两个层次四叉树结构,然后再分别以这两个四叉树范围空间为基准往下逐层进行空间范围四叉树的划分。通常情况下,最上层的Level0只是一张图,往下一层,Level1就有4张图,依次往下进行划分。划分完后要对每张图片进行层及行列编码(Level,col,row),行列编码值不仅是一个瓦片数据的索引,同时还是瓦片数据的地理位置标志,通过数学公式,行列编码和经纬度可以实现相互转换。
HBase是Apache借鉴BigTable架构而推出的非结构化数据库系统,它所采取的分布式存取架构和分布式计算模式非常适于存储类似于非结构化的数据,同时分布式的架构确保HBase可以存储类似于GIS瓦片形式的海量的非结构化行数据。虚拟地球客户端向服务端发送瓦片唯一的标志码,服务端利用MapReduce分布式计算方式搜索存储于HBase数据库中的海量键值对数据,由于巨大的行记录数据没有采取表分割策略,在搜索时大大减少了多表之间的链接查询;非结构化的结构形式同时减少了数据的冗余性,保障了服务器的高效;同时云计算服务器将历史及现势GIS瓦片一并存储于一个表,为瓦片数据阶段性对比分析提供了极大便利。因此,本文所有三维虚拟地球瓦片数据全部使用HBase存储。
3.1 数据存取架构
基于Hadoop的三维虚拟地球后台数据库采用了HBase技术架构,如图6所示:
图6 实验系统架构
客户端使用了GeoGlobe三维虚拟地球,能够用于展示三维状态下的影像、地形及模型数据。数据存储于HBase之中,它利用的是HDFS分布式文件系统,客户端通过向服务器发送相应瓦片数据请求,由HBase利用MapReduce分布式计算方法搜索并处理相应的数据,经由网络发送到GeoGlobe客户端进行显示。
在存储过程中,HBase数据存储采用一个稀疏的长期存储的、多维度的、排序的映射表,这张表的索引是行关键字、列关键字和时间戳。如图7所示:
图7 HBase行数据存储方式
这是这种特殊的设计结构,使得HBase不仅可以存储当前数据,还可以存储过去的数据,各个数据之间由时间戳区分,标志一样的同一个瓦片数据可以存于一个表中,先存的时间戳值比较小,后存的数据的时间戳值比较大,充当了数据的版本信息,在搜索时可以指定时间段及版本个数,从而检索到对应的一个或者多个数据。
3.2 瓦片数据组织形式
GeoGlobe采用了不同地区的瓦片数据形成一个数据集的方式,从远视点向近视点行进时,全球范围内分辨率较低的几层数据构成一个数据集,再往下时,亚洲、欧洲等地区的较高分辨率瓦片分别形成一个数据集,再往下,到达每个省市时都有一个特定的数据集,如图8所示:
图8 GeoGlobe数据集组织方式
传统数据库中,不同的数据集存储于不同的数据库中,然而由于HBase表特征的结构形式,使得HBase表能够轻松调度多达10亿行的数据,因此,可以将一个数据集的数据存储到一个HBase表中,表的名字则是地区名字标识。如图9所示:
图9 试验系统表组织方式
表总共只包含了3个列属性,第一个是通用的行关键字属性字段,可以将它对应为数据集名字、瓦片所在层数及瓦片行列号所形成的字符串,在瓦片数据检索时,只通过第一个字段就可以定位到瓦片数据所在行;行的第二个字段名字取为length,用于表示瓦片二进制数据的字节长度;行的第三个字段是存储实际的瓦片的二进制数据,是瓦片的主体部分。
3.3 HBase操作瓦片函数
为了方便用户操作HBase中数据,HBase提供了表数据更新API接口,主要分为以下几类接口函数:
(1)建立数据表函数
HTableDescriptor是具体表属性管理类,admin是HBaseAdmin类,此类用于管理所有的HBase中所有表。HColumnDescriptor用于标识表字段,每个字段都是HTableDescriptor类表的一个内部字段类。
(2)添加行数据函数
HTablePool用于异步对所有的表进行管理,Put用于存储行内所有的字段值,通过HTable的put方法将存储在Put类对象中数据存储到HTable表中。
(3)查询行字段数据函数
查询字段值是HBase中十分重要的功能,这个是通过Get类对象达到效果的。通过向Get类对象提供关键字值,再从HTable中获取到Result类对象,此时返回的可能是多个结果行数据,还需要提供过滤条件获取目的KeyValue类对象,最后返回Value字段。
(4)删除行数据函数
在HBase中删除一条记录使用Delete对象,和Get对象一样,给予Delete对象行数据关键值,调用HTable的delete方法就能将行数据删掉。
(5)删除表函数
使用HBaseAdmin首先将相应表设置为不可用,然后再删除表。
3.4 实验结果
本论文实验采用LoadRunner虚拟用户访问,服务器使用分布式集群,除服务器之外,采用相同的资源配置,实验结果采集到服务器吞吐量及用户并发数,最后分析服务器性能。
(1)服务器吞吐量对比分析,如图10、图11所示。
图10 非HBase服务器吞吐量效果图
图11 HBase服务器吞吐量效果图
在同种情况下,非HBase服务器平均吞吐量487 522.308字节每秒,最高吞吐量是750 000字节每秒,而在采用HBase服务器之后,平均吞吐量达到了809 101.70字节每秒,最高吞吐量也上升到了1 064 511.75字节每秒,效率平均提高了65.96%。
(2)服务器用户数对比分析,如图12、图13所示。
图12 非HBase服务器用户数效果图
图13 HBase服务器用户数效果图
在同种情况下,非HBase服务器多用户并发的数量达到68个时,已经是上限,而平均只有35.292个,而在采用HBase服务器之后,多用户并发量平均值是81.452,平均数提高了130.79%,而在用户并发达到100个以上时,系统的运行仍然非常稳定。
云计算的发展能够极大推动GIS行业的前进,同时云计算的各项特点非常适用于GIS数据的存储与分析。利用开源云平台Hadoop可以快速的部署本单位私有云,根据三维虚拟地球数据组织特点,能成功地从云平台获取到相应的服务。
[1] 黄志洪.大数据分析的案例、方法与挑战[R].中山大学海量数据与云计算研究中心,2012.
[2] 陈静,龚健雅,向隆刚.全球多尺度空间数据模型研究[J].地理信息世界,2011,36(4):24~27.
[3] 李少丹.“云GIS”的发展趋势分析[J].电脑知识与技术,2011,16,3824~3826.
[4] Esri中国(北京)有限公司.ArcGIS云计算解决方案-触手可及的云[R].
[5] 郝树魁.分布式存储系统HBase原理解析[OL/DB].中国科技论文在线.
[6] 宋关福.云计算时代的GIS技术发展漫谈[J].测绘与空间地理信息,2011,34(S),1~4.
Study on Virtual Globe’s Data Structure Based on Cloud Computing Platform Hadoop
Li Shengyou,Yang Qiulian,Sun Zhongfang
(Tianjin Institute of Surveying and Mapping,Tianjin 300381,China)
Cloud computing’developing has enforced IT develop.On the same,this is a change for GIS.This paper setup a tiny private Cloud Computing Platform based on Open Source framework Hadoop,use the advantage of HBase in storaging the key/value data,this paper store the Virtual Globe GeoGlobe tile data on the HBase,implementing the storing of 3D GIS Pyramid tile data,giving the implementing of the resolution.
cloud computing;hadoop;HBase;3D GIS;pyramid tile data structure;GIS server
2014—02—20
李胜友(1973—),男,高级工程师,主要从事测绘及GIS开发等技术工作。