首页> 中国专利> 基于hadoop的海量瓦片小文件存储管理方法

基于hadoop的海量瓦片小文件存储管理方法

摘要

本发明提供一种基于hadoop的海量瓦片小文件存储管理方法,通过希尔伯特曲线排序再利用Hadoop本身自带的Sequence File技术对栅格瓦片数据进行序列化压缩存储;在生成瓦片压缩块的时候实现多台服务器多线程并行压缩及生成瓦片索引信息,提高海量文件入库存储速度;对块文件名的规则命名管理,能对海量、多源、多版本栅格小瓦片提供高效存储、快速读取及高性能栅格数据服务;设计了ITMS(Improved Tile Map Service),解决传输原始数据和应对实时数据处理请求造成的延迟与带宽占用,以满足项目数据检索与传输要求。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-09

    授权

    授权

  • 2015-09-02

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20150520

    实质审查的生效

  • 2015-08-05

    公开

    公开

说明书

技术领域

本发明涉及hadoop分布式平台上进行栅格数据存储管理方法,特别是海量、多源、多版本栅格小文件的存储管理方法。

背景技术

随着GIS技术的快速发展,地图数据急剧增长,相应的瓦片数据量大、数据源多、版本多,如何高效存储管理海量地图瓦片数据成为难题。

云计算的出现提供了一个新的思路。近几年来,为了解决大规模数据的存储和管理的问题,许多公司和机构提出了一系列基于“云计算”技术的可扩展的大规模数据管理方案。目前主流的开源项目Hadoop是一个包含了海量数据存储和计算的分布式系统架构,可以在廉价PC Server上部署大规模结构化存储的集群。

目前已有较多针对小文件数据存储和管理的研究,并已提出了一系列解决方法,这些方法中普遍采用的是对小文件进行合并成大文件,再使用分层索引的方法来管理这些合并后的大文件。

    专利号为CN201310398165.4 公开了一种海量瓦片数据的存储方法及读取方法,该方法根据获取的瓦片数据的分层信息生成一级索引文件的数据块;将一级索引文件的数据块进一步划分为数据网格,得到每个单元格在数据块中的位置坐标;根据位置坐标和分块信息生成对应瓦片数据的二级索引文件;按照先到先存的方式将瓦片数据存储;在每次进行目标瓦片数据存储写入时,将对应生成的一级索引文件和二级索引文件存储。

这种技术方案存在以下缺点:

(1)现有的小文件存储和管理方法多基于分层索引来管理数据,分层索引带来的问题是要额外耗费精力来开发一种Hadoop集群小文件存储机制来保证小文件合并后的块文件索引与对应的这个块一起传输到同一个DataNode的同一位置,实现小文件合并后的块文件索引的分布式存储,Hadoop集群中的NameNode也需要额外消耗资源来管理索引文件,增加内存开销;

(2)在项目应用中可能存在数据源多样,多版本的瓦片文件,分层索引的方法并不适用于多数据源和多版本的小文件的快速和高效读取;

(3)项目存在大量原始数据和频繁的实时数据请求,现有方案没有专门针对数据传输和数据处理进行优化,将影响项目运行时的数据传输和数据响应性能表现。

发明内容

有鉴于此,本发明提出了一种基于hadoop的海量瓦片小文件存储管理方法,不用额外开发Hadoop集群存储机制,利用Hadoop本身自带的功能来存储和管理小文件。该方法针对海量、多源、多版本栅格小瓦片提供高效存储、快速读取及高性能栅格数据服务。本发明还对标准TMS(Tile Map Service)进行改进,解决传输原始数据和应对实时数据处理请求造成的延迟与带宽占用,以满足项目数据检索与传输要求。

本发明采用以下技术方案实现:一种基于hadoop的海量瓦片小文件存储管理方法,其特征在于:包括以下步骤:步骤S1:对欲存储的文件的大小进行判断,如果单个文件小于20M的将其进行序列化压缩再入库存储,如果单个文件大于等于20M就直接入库存储;步骤S2:引入了希尔伯特曲线对存储的文件进行排序;步骤S3:对存储的文件进行压缩及生成瓦片索引信息;步骤S4:对瓦片文件进行分类、命名;步骤S5:建立瓦片信息索引表;步骤S6:提供一改进型地理数据块服务ITMS,通过所述ITMS提供的对多类型预生成地理数据单元块进行异步访问;步骤S7:将Memcached作为一个缓存区域,若请求的瓦片数据在缓存列表中,则直接返回该瓦片数据,否则去HBase中查询;将缓存查询结果字符串索引保存到缓存列表中,并将被请求过的数据瓦片保存在内存中。

在本发明以一实施例中,步骤S4中的命名规则为:数据来源+投影方式+文件格式+Id+版本;其中数据来源为元数据XML中记录了不同地图数据来源的编号,投影方式为元数据XML中记录不同投影方式的对应编号,文件格式为元数据XML中记录了不同文件格式对应的编号,Id为区分同层同类型同格式的序列化块ID而采用与系统时间有关的随机数,版本为由客户端和服务端约定好的并写在配置文件中版本编号。

在本发明一实施例中,步骤S5所述索引表通过行关键字rowkey的字典顺序来组织数据;其中RowKey为SRS+Lod+X+Y+Dataset+FileType,共18字符,其中SRS字段是投影方式对应的编码,Lod、X、Y分别代表层、经度和纬度,支持24层分层,DataSet是外层和内层数据集的说明,FileType是文件类型对应编码。

在本发明一实施例中,通过ITMS接口接收客户端请求使其接收服务元数据资源及地理数据块资源,其中服务元数据资源为服务端实现的能力和包含的信息,地理数据块资源表示一层地理数据中的一个瓦片;利用键值对列表形式表示参数和值,通过HTTP GET或POST方式向系统发送服务请求。

与现有技术相比,本发明具有以下优点:

(1)无需对现有Hadoop集群存储机制进行修改,通过希尔伯特曲线排序再利用Hadoop本身自带的Sequence File技术对栅格瓦片数据进行序列化压缩存储;利用Hadoop的MapReduce分布式计算的功能,在生成瓦片压缩块的时候实现多台服务器多线程并行压缩及生成瓦片索引信息,提高海量文件入库存储速度;对块文件名的规则命名管理,能对海量、多源、多版本栅格小瓦片提供高效存储、快速读取及高性能栅格数据服务;

(2)对标准TMS(Tile Map Service)服务规范进行改进,设计了ITMS(Improved Tile Map Service),解决传输原始数据和应对实时数据处理请求造成的延迟与带宽占用,以满足项目数据检索与传输要求;

(3)本通过在分布式数据库HBase上搭建瓦片数据索引数据库,充分利用了HBase对大数据索引的支持,为海量的地图瓦片数据量提供很好的支持。

附图说明

图1为本发明一实施例瓦片获取的流程图。

具体实施方式

下面结合附图和具体实施例对本发明做进一步说明。

本发明提供一种基于hadoop的海量瓦片小文件存储管理方法,其特征在于:包括以下步骤:步骤S1:对欲存储的文件的大小进行判断,如果单个文件小于20M的将其进行序列化压缩再入库存储,如果单个文件大于等于20M就直接入库存储;步骤S2:引入了希尔伯特曲线对存储的文件进行排序;步骤S3:对存储的文件进行压缩及生成瓦片索引信息;步骤S4:对瓦片文件进行分类、命名;步骤S5:建立瓦片信息索引表;步骤S6:提供一改进型地理数据块服务ITMS,通过所述ITMS提供的对多类型预生成地理数据单元块进行异步访问;步骤S7:将Memcached作为一个缓存区域,若请求的瓦片数据在缓存列表中,则直接返回该瓦片数据,否则去HBase中查询;将缓存查询结果字符串索引保存到缓存列表中,并将被请求过的数据瓦片保存在内存中。本发明一实施例的瓦片数据获取流程参见图1。

步骤S2中希尔伯特曲线可以看作一种从N维空间到1维空间的映射,保留了原空间中相邻点的相关性。由于地图数据按层切割成无数瓦片后,同一文件夹里的瓦片在经纬度上面都是相邻的,对同一层的瓦片文件按照希尔伯特曲线进行排序,对排序后的瓦片进行序列化压缩存储为HDFS文件系统中的块,使地理上相近的瓦片在物理存储上也相近,极大地提升文件系统读取性能。

步骤S7中将缓存查询结果字符串索引保存到缓存列表中,并把被请求过的瓦片保存在内存中。当其他客户端请求同样数据时,服务端能够快速响应处理,使得客户端能够快速获取到瓦片数据。Memcached是一套独立的分布式的高速缓存系统。Memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。即将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

HBase的数据模型可以定义为一种稀疏的、长期存储的、分布式的、多维排序的映射表。表中的行关键字rowkey可以是任意的字符串,对同一个行关键字的读或者写操作都是原子的,表通过rowkey的字典顺序来组织数据。具有相同rowkey前缀的数据的存放位置接近,在读取的时候,可以把这些数据一次读取出来。而数据的索引也是基于rowkey的,可以以前缀匹配的方式快速查找到rowkey索引的数据。

在本发明一实施例中,步骤S4中的命名规则为:数据来源+投影方式+文件格式+Id+版本;其中数据来源为元数据XML中记录了不同地图数据来源的编号,投影方式为元数据XML中记录不同投影方式的对应编号,文件格式为元数据XML中记录了不同文件格式对应的编号,Id为区分同层同类型同格式的序列化块ID而采用与系统时间有关的随机数,版本为由客户端和服务端约定好的并写在配置文件中版本编号。

本发明影像、高程及矢量瓦片信息索引表如表1所述,

表1 瓦片信息索引表

RowKey字段说明:SRS字段是投影方式对应的编码;Lod、X、Y代表层、经度和纬度,支持24层分层;DataSet是外层和内层数据集的说明;FileType是文件类型对应编码。需要在xml里配置三个要素的有:SRS、Dataset、FileType。瓦片信息索引表通过对RowKey的编码设计,即可实现瓦片文件被压缩后在块中对于的索引信息有效映射。

本发明对标准TMS(Tile Map Service)进行修改与拓展,提出了一种改进型地理数据块服务ITMS(Improved Tile Map Service)。在这种基于单元块的地理数据服务中,系统通过ITMS提供对多类型预生成地理数据单元块的异步访问,而不用传输原始数据或应对实时数据处理请求,有效减少了延迟与带宽占用。

ITMS实现的实现包括以下步骤:通过ITMS接口接收客户端请求使其接收服务元数据资源及地理数据块资源,其中服务元数据资源为服务端实现的能力和包含的信息,地理数据块资源表示一层地理数据中的一个瓦片;利用键值对列表形式表示参数和值,通过HTTP GET或POST方式向系统发送服务请求。其中地理数据块可以是图片、矢量、数据块元数据或其他服务元数据中定义的文件格式,但服务端同时只返回某数据块的单一完整格式文件。

ITMS服务端支持键值对列表形式的参数和值并通过HTTP GET或POST方式发送的服务请求。参数列表以“?”开始,参数键值对定义为:参数名加“=”再加上参数值,如“service=ITMS”。不同参数使用“&”分隔,列表型参数中的多个值使用“,”分隔,命名空间与标示符以“:”分隔。参数名一律小写,参数值区分大小写。

    服务端在接收到有效请求时,必须按相应规范中的详细规定作出准确应答。在接到无效请求时,服务端必须发送规定的服务异常。

客户端向服务端请求某个经纬度的地图瓦片时,参数会以键值对形式出现,服务端可使用Http Get传输方式实现键值对编码的GetTile操作请求。对请求参数的详细描述参见表2。

表2 请求参数表

Request请求格式如下:

http://ITMSDemoServer/ITMS?&r=GetTile&d=newmap:world&f=jpg&c=EPSG:4326&z=1&x=1&y=1&v=1

服务端解析请求的参数,将参数进行编码转换并重组成一条字符串,然后对在缓存的列表中查询这个字符串,如果存在就直接返回字符串对应的瓦片,如果没有就去HBase中查询。HBase按照rowkey字典序来存放数据,它的索引是建立在rowkey的基础上的。在HBase中查询的时候,程序根据字符串转换成瓦片对应rowkey,如果HBase中有这个rowkey,则通过Index列族中的字段记录的信息从HDFS中读取到瓦片。

本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号