我的github

1. 切片的存储和读写:

 

 2. 切片的生成:

 

 

前期准备:Vmware vSphere、OpenStack

                  Hadoop、Spark

1. 绪论

1.1 研究背景和意义

传统的并行计算及网络技术在处理大数据方面因为系统不开放(不开源? )、高耦合性、部署操作复杂、投资昂贵、并行处理程序编写困难等问题而没有得到广泛的应用和深入推广,但近年来快速发展的云计算在解决海量数据处理领域提出了分布式计算模式,最具代表性的就是Hadoop。Hadoop是由Apache基金会组织开发的一个开源分布式大数据处理平台,模仿和实现了Google大数据处理的主要技术,具有易扩展、高容错、可靠、高效、经济等优点,成为近年来应用最广泛的开源大数据处理平台。

经过多年的发展,国家与地方测绘地理信息部门已经基本完成了各种基础测绘成果的生产与建库,成果应用与数据更新将是今后工作的重要方面。这两者技术问题可以借助于大数据技术。特别是大规模地理数据的存取、更新与服务。

地图渲染性能的提升将会增强地理空间数据提供实时服务的效能。目前测绘成果的应用主要体现为显示、搜索等。现有的技术在渲染和可视化方面存在着性能不够强大,响应延迟较高的局限性。

Hadoop虽然不能完整地套用到地理数据的处理过程之中,但是通过对现有方法的改造和升级,结合大数据框架进行任务的分配和并行处理,可以有效地提升性能和改善效果,为地理信息服务提供基础技术支撑。

本课题根据Hadoop的技术特点和Mapnik渲染机制,通过设计支持储存空间矢量数据的HBase表单格式,实现空间矢量数据导入HBase并对其重新划分;通过在MapReduce并行计算框架中融合MapNik渲染引擎,实现空间矢量数据基于Hadoop的分布式高效渲染。

1.2 研究现状

Hadoop现状:现在对Hadoop的研究主要分为两个部分,第一部分是对Hadoop本身的框架和结构,第二部分是对Hadoop的应用研究。

而Hadoop在空间数据上的研究是,空间数据的处理单元是二维或三维坐标,而Hadoop都是以字节流的形式表现的一维数据,这就需要在使用过程中将多维坐标降维转换成一维字符串,并且保证一维字符串在最大程度上保持其原有的地理特征信息。

文献[29]通过分析Key/Value 数据模型及GeoJSON地理数据编码格式,构建了可存储于HDFS上的空间矢量数据 Key/Value 文本文件格式;通过探讨空间矢量数据的MapReduce计算过程,对Map数据分片、并行处理过程及Reduce结果合并等关键步骤进行了详细阐述并建立了空间矢量数据分布式计算原型系统;文献[30]设计了可存储于HDFS的矢量文件格式,实现了一种分布式的空间矢量数据选择查询处理方法;文献[31]利用HBase对海量空间数据及部门业务数据进行分布式存储,解决了HDFS不善管理小文件的缺点;运用MapReduce将GIS的分析任务分布于集群节点进行处理,实现了基于云平台的空间数据分布式存储与标准地图服务发布:文献[32]设计了一种基于MapReduce的并行构建网格空间索引的方法,该方法能够将海量空间矢量数据的网格索引构建分配到各子节点进行,加快了索引构建的处理速度;文献[33]着重在基于HBase的海量空间数据管理技术和海量空间数据并行处理方法等方面进行深入研究,设计并实现了基于MapReduce并行编程框架的海量空间数据并行处理引擎MapReduceGIS; 文献[34]根据矢量和栅格空间数据的不同特点,提出并实现了矢量栅格数据一体化的海量空间数据分布式云存储管理与访问服务方案;文献[35]提出了土地资源信息化管理研究中基于云计算的高效处理建模理论框架,解决了空间数据分布式存储策略、空间云服务索引创建与操作、空间数据高效并行操作等关键问题;文献[36]研究了数字博物馆海量多媒体小文件的存储和多尺度空间数据的管理技术,分别提出了基于HDFS的小文件合并策略和基于HBase的海量文物空间数据的管理技术;文献[37]设计与开发了一个基于MapReduce计算模型的栅格数据分布式计算系统,解决了该系统的栅格数据HDFS分布式存储、高效Map并行处理及Reduce合并等关键技术;文献[38]设计并实现了--套专用于存储栅格地图数据的分布式存储方案,并完成了基于MapReduce的数据清理功能。

上述研究表明,利用Hadoop在空间数据处理时,集中在空间数据的分布式存储和查询。基于HDFS分布式文件系统的存储模型和查询,基于HBASE的存储和查询,优势明显。

1.3 论文主要工作和结构安排

(1)分析研究了Hadoop平台拓扑结构和基本情况:分布式文件系统HDFS的系统架构和存取机制;分布式数据库HBase的系统架构、表存储模型、读写方法和编程实现方法;并行计算框架MapReduce的系统架构、技术特点和任务运行流程;开源GIS工具包GeoTools的功能模块和安装方式;开源地理渲染引擎Mapnik的功能模块、技术特点和安装方法,讨论分析了GeoTools解析Shapefile格式空间矢量数据的流程和构建空间矢量要素模型并生成Shapefile格式矢量数据文件的具体实现方法。

(2)结合实际需求和空间矢量数据的逻辑关系设计了HBase表单格式。提出了Shapefile格式空间矢量数据通过GeoTools转换为遵循WKT标准的一维字符串数据并导入Hbase的算法。

(3)按照算法实现了基于多线程的空间矢量数据导入HBase表单,数据入库后的结构完全符合表单设计结构。

(4)利用HBase支持MapReduce的技术特点,构建空间矢量数据划分算法,完成了对Shapefile格式的空间矢量数据的分块。

(5)搭建Hadoop实验集群,并将其改造成为面向空间矢量数据渲染的Hadoop实验集群,实现了基于该实验集群的空间矢量数据分布式渲染,设计并实现了渲染结果的叠加可视化方法。

论文的整体架构流程图如下图所示。

 

 

 

 

 

 

 

 

 

 

 

第二章,介绍Hadoop及其核心组件的相关知识,详细叙述HDFS、MapReduce和 HBase的体系架构特点、内部运行机制。为基于HBase的空间矢量数据存储模型的实现 和将Mapnik融入MapReduce框架提供理论依据。

第三章,介绍空间数据的基本知识和HBase表设计的原则,将表的行键设计为空间 对象几何中心点横坐标+空间对象几何中心点纵坐标+图层标识。根据空间数据的组织结 构特点,设计了三个表列族:空间对象几何属性列族、空间对象非几何属性列族和过滤列 族。

第四章,介绍开源GIS工具包GeoTools的功能模块和及其对空间矢量数据的基本 操作方法,讨论应用GeoTools读取 Shapefile格式空间矢量数据和构建空间矢量要素对 象、生成Shapefile格式矢量数据文件的过程,提出Shapefile格式空间矢量数据导入 HBase和空间矢量数据分块算法,介绍搭建Hadoop实验集群并进行空间矢量数据的导 入和分块实验的流程。

第五章,介绍Mapnik的安装、使用方法和基于Java语言的编程方式;介绍搭建面 向空间矢量数据渲染的Hadoop平台的配置方法和分布式渲染的实现过程,完成在三种 条件下的实验结果分析。

第六章,总结论文所做的工作及研究成果,对不足之处进行简要概括。

2. 关键技术概述

2.1 分布式计算平台Hadoop

Hadoop是一系列开源软件项目的集合,其核心是分布式文件系统HDFS、并行计算框架MapReduce和分布式数据库HBase,它们分别是Google云计算核心技术GFS、MapReduce和BigTable的开源实现。

2.2 HDFS文件系统及其Java API

(1)能够存储超大文件

(2)支持高吞吐量的流式数据访问

(3)支持商用硬件和良好的修复能力

(4)移动计算比移动数据更经济

(5)不适合低时间延迟的数据访问

(6)不适合存储大量的小文件

HDFS采用了典型的主从式(master/slave)架构技术,可以通过master配置来掌控系统整体功能、状态,从而屏蔽了底层的复杂结构,并向用户提供方便的文件目录映射。

每个block大小为64M。同一个机架内的传输速度比机架间的传输速度快。定时检测心跳,进行修复。

2.3 并行计算框架MapReduce简介

MapReduce是Google提出的一个软件架构,是一种处理大规模数据的编程框架。从自身的命名可以看出,它由两个任务阶段组成:Map和Reduce。用户只需要编写map()和reduce()两个函数,即可完成简单的分布式程序的设计。MapReduce模型如图2.4所示。

 map()函数以key/value键值对作为输入,产生另外一系列key/value键值对作为中间输出写入本地键盘。MapReduce框架会自动将这些中间数据按照key值进行聚集,且key值相同(相似)的数据被统一交给reduce()函数处理。比如一组数值为<k1,x>、<k2,y>、<k3,z>的数据交由map()函数处理后,它们的形式应当为<k1,List(x)>、<k2,List(y)>、<k3,List(z)>。

Reduce()函数以key及对应的value列表作为输入,按实际需求处理key相同的value列表后,产生另外一系列key/value键值对作为最终结果,输出写入HDFS。

MapReduce的架构与HDFS一样。

(1)Client

用户编写的MapReduce程序以及集群配置参数Configuration通过Client提交到JobTracker端。同时,用户可以通过Client提供的一些接口查看作业运行状态。在Hadoop内部用“作业”(Job)表示MapReduce程序。一个MapReduce程序可对应若干个作业,而每个作业会被分解成若干个Map/Reduce任务(Task)。

(2)JobTracker

JobTracker主要负责资源监控和作业调度。JobTracker负责调度Job的每一个子任务Task运行于TaskTracker上,并监控它们。如果发现有失败的Task就重新运行它。

(3)TaskTracker

TaskTracker会周期性地通过Heartbeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,并负责直接执行每一个任务。

(4)Task

Task分为Map Task和Reduce Task两种,均由TaskTracker启动。我们知道,HDFS以固定大小的Block为基本单位存储数据,而MapReduce的基本处理单位是Split。Split是一个逻辑概念,它只包含一些元数据信息,比如数据的起始位置、数据长度、数据所在节点等。它的划分方法可以由用户自己决定。但需要注意的是,Split的多少决定了Map Task的数目,因为每个Split会交由一个Map Task处理。

Map Task执行过程如图2.6所示。由该图可知,Map Task先将对应的Split迭代解析成一个个key/value键值对,依次调用用户编写的map()函数进行处理,最终将临时结果存放到本地磁盘上,其中临时数据被分成若干个partition,每个partition将被一个Reduce Task处理。

 

 Reduce Task执行过程如图2.7所示。该过程分为三个阶段:(1)从远程节点上读取Map Task中间结果(称为“Shuffle”阶段);(2)按照key对key/value键值对进行排序(称为“sort”阶段);(3)依次读取<key,List(value)>,调用用户编写的reduce()函数处理,并将最终结果存到HDFS上。

Hadoop MapReduce工作流程

作业提交与初始化:用户提交数据后,首先由JobClient实例将作业相关信息,比如MapReduce程序jar包、作业配置文件、分片元信息文件等上传到HDFS上。其中,分片元信息文件记录了每个输入分片的逻辑位置信息,然后JobClient通过RPC通知JobTracker。JobTracker收到新作业提交请求后,由作业调度模块对作业进行初始化:为作业创建一个JobInProgress对象以跟踪作业运行情况,而JobInProgress则会为每个Task创建一个TaskInProgress对象以跟踪每个任务的运行状态。

任务调度与监控:任务调度与监控的功能均由JobTracker完成。TaskTracker周期性地通过Heartbeat向JobTracker汇报本节点的资源使用情况,一旦出现空闲资源,任务调度器驱使JobTracker按照一定的策略选择一个合适的任务使用该空闲资源。此外,JobTracker跟踪作业的整个运行过程,当TaskTracker或者Task失败时,转移计算任务;当某个Task执行进度远落后于同一作业的其他Task时,再启动一个相同的Task,并选取计算快的Task结果作为最终结果。

任务运行环境准备:运行环境准备包括JVM启动和资源隔离,均由TaskTracker实现。TaskTracker为每个Task启动一个独立的JVM以避免不同Task在运行过程中相互影响。同时,TaskTracker使用了操作系统进程实现资源隔离以防止Task滥用资源。

任务执行:TaskTracker为Task准备好运行环境后,便会启动Task。在运行过程中,每个Task的最新进度首先由Task通过RPC汇报给TaskTracker,再由TaskTracker汇报给JobTracker。

作业完成:待所有Task执行完毕后,整个作业执行成功。整体流程如图2.8所示。

 

 

2.4 分布式数据库HBase及其Java API

HBase是一个高可靠、高性能、面向列、可伸缩的分布式储存系统,也是Google Bigtable的开源实现。与Google Bigtable利用GFS作为其文件存储系统类似,HBase利用Hadoop HDFS作为其文件存储系统,Google Bigtable利用Chubby作为协同服务,HBase利用ZooKeeper发挥同样作用。

 

 

2.5 Mapnik渲染引擎概述

Mapnik是一个开源的Python/C++地图渲染引擎,为开发制图应用程序提供渲染工具,它的功能是将文件形式的地图数据(包含一些地理对象,如图层、地理空间数据集等等)

3. 基于HBase的空间矢量数据存储表格设计

3.1 相关知识概述

矢量数据以几何坐标的方式来尽可能将地理实体对象的空间位置表现的准确无误。

 

[参考文献]

[2]大数据未来在于空间关联分析[WB/OL].http://news.3snews.net/2013/

[3]薛纯,张福浩,赵阳阳,等.大数据视角下的多源组织机构代码信息融合方法.测绘科学,2014,39(5):77.

[4]TomW.Hadoop:The Definitive Guide[M].AmericantOReilly Media,Inc,2012

[5]刘鹏,黄宜华,陈卫卫.实战Hadoop[M.北京:电子工业出版社,2011

[6] Chunk L. Hadoop in action[M].AmericanrManning Publications.2010.

[7]邰建华.Hadoop平台下的海量数据存储技术研究[D].大庆:东北石油大学.2012.

[8]陆嘉恒.Hadoop实战(第2版)[M].北京:机械工业出版社.2013.

[9] Gimarathne T,Wu T L,Qiu J,et al. MapReduce in the Clouds for Science[C]//Cloud Computing Technology and Science (CloudCom),2010 IEEE Second Intemational Conference on. IEEE,2010:565-572

[10]董世晓,云计算开源先锋Hadoop:第四届Hadoop中国云计算大会纪实[J].程序员,2011,10(12):23-24.

[11] Dhruba Borthakur, Jonathan Gray, Joydeep Sen Sarma, et al. Apache hadoop goes realtime at Facebook[C].Proceedings of the 2011 international conference on Management of data. 2011.1071-1080.

[12]周敏.淘宝分布式数据处理实践[J].淘宝数据平台及产品部,2010-9-4.

[13]孟庆,马如悦.揭秘百度分布式系统与未来发展[EB/OL.[2010-10-271.ttp://www.ciotimes.com/cloud /cyy/38770.html.

[14] chinacloud.百度Hadoop分布式系统揭秘:4000节点集群[EB/OL].[2010-11-08 .ttp://www. cnblogs.com/chinacloud/archive/2010/11/08/1871592.html.

[15]王宾.Hadoop集群的部署与管理系统的设计与实现[D].南京:南京大学.2013

[16]李玉林,董晶.基于Hadoop的MapReduce模型的研究与改进[J].计算机工程与设计,2012,33(8):3111

[17]李云桃.基于Hadoop的海量数据处理系统的设计与实现[D].哈尔滨:哈尔滨工业大学.2011.

[18]张兴.基于Hadoop的云存储平台的研究与实现[D].成都:电子科技大学.2013.

[19]程锦佳.基于Hadoop的分布式爬虫及其实现[D].北京:北京邮电大学.2010

[20]李林.基于Hadoop的海量图片存储模型的分析和设计[D].杭州:杭州电子科技大学.2011.

[21]李波.基于Hadoop的海量图象数据管理[D].上海:华东师范大学.2011,

[22]霍树明.基于Hadoop的海量影像数据管理关键技术研究[D].长沙:国防科学技术大学.2010.

[23]程豪.基于Hadoop的交通大数据计算应用研究[D].西安:长安大学.2014.

[24]李佳.基于Hadoop的图片地理定位研究[D].厦门:厦门大学.2014.

[25]陈永权.基于Hadoop的图像检索算法研究与实现[D].广州:华南理工大学.2013.

[26]周涛.基于Hadoop的遥感数字图像处理方法研究[D].长春:东北师范大学.2013.

[27]朱明义.基于Hadoop平台的图像分类[J].西南科技大学学报,2011,26(2):70.

[28]张良将,基于Hadoop云平台的海量数字图像数据挖掘的研究[D].上海:上海交通大学,2013.

[29]尹芳,冯敏,诸云强,等.基于开源Hadoop的矢量空间数据分布式处理研究[J].计算机工程与应用,2013:25-29.

[30]何涛,刘强,郑泽忠,等.基于MapRedue的大规模矢量空间数据选择查询处理[J].科技创新导报,2014,11(9):193-194.

[31]范建永,龙明,熊伟.基于Hadoop的云GIS体系结构研究[J].测绘通报,2013(11):93-97.

[32]范建永,龙明,熊伟,基于HBase的矢量空间数据分布式存储研究[J].地理与地理信息科学,2012,28(5)39-42.

[33]崔鑫.海量空间数据的分布式存储管理及并行处理技术研究[D].长沙:国防科技大学.2010.

[34]陈崇成.基于NoSQL的海量空间数据云存储与服务方法[D].地球信息科学学报,2013,15(2):166.

[35]方雷.基于云计算的土地资源服务高效处理平台关键技术探索与研究[D].杭州:浙江大学.2011.

[36]陈泽锋.数字博物馆海量数据的分布式存储关键技术研究与实现[D].杭州:浙江大学.2013.

[37]刘磊,尹芳等.基于开源Hadoop的栅格数据分布式处理[J].华中科技大学学报,2013,41(7):103.

[38]邱晨健.栅格地图分布式存储方案设计与性能分析[D].西安:西安电子科技大学.2014.

[39]董西城.Hadoop技术内幕:深入读取YARN架构设计与实现原理[M].北京:机械工业出版社,2013.

[40) ttp://nutch.apache.org/

[41] GHEMAWATS.GOBIOFF H,LEUNG STThe Google file system[A].Proceeding of 19thACM Symposium on Operating Systems Principles[C].2003.20-43.

[42] DEAN J. GHEMAWAT S.MapReduce: Simplified data processing on large clusters[A].OSDI'O4:6th Symposium on Operating Systems Design and Implementation[C].2004.137-150

[43] CHANG F, DEAN J, CHEMAWAS, et al.Bigtable:A distributed storage system for structured data[A].OSDI'06:Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation[C].2006.205-218.

[44]张丹.HDFS中文件存储优化的相关技术的研究[D].南京:南京师范大学.2013.

[45] HDFS User Guide [WB/OL].http://hadoop.apache.org/docs/r0.23.10/hadoop-project-dist/ hadoop-hdfs/ HdfsU serGuide.html

[46] Ranger C,Raghuraman R,Penmetsa A,et al Evaluating mapreduce for multi-core and multiprocessor systems[C]/High Performance Computer Architecture, 2007.HPCA 2007. IEEE I3h Intemational Symposium on. IEEE,2007:13-24

[47] George, Lars. HBase: The Definitive Guid. OReilly Media, 2011.

[48] Hunt,Patrick, Mahadev Konar, Flavio P. Junqueira, and Benjamin Reed."ZooKeeper: Wait-free coordination for Intemet-scale systems." Ln USENIXATC,2010(10).

[49] Zookeeper[OL].2012,http://zookcepcr.apachc.org/.

[50]汤国安,刘学军,闾国年,地理信息系统教程[M].北京:高等教育出版社,2007.

[51]许捍卫,冯学智.空间数据存储机制研究[J].计算机应用研究,2003,20(2):30-40.

[52]覃雄派,王会举,杜小勇,王珊.大数据分析:RDBMS与MapReduce的竞争与共生[].软件学报2012(1):32-45.

[53]毛先成,彭华熔.关系数据库存储空间数据模型与结构分析[J].地球信息科学.2005,7(1):76-79.

[54]潘农菲.GIS的空间数据在关系型数据库的实现理论及应用技术[J].计算机应用研究.2002(2):92-94.

[55]史婷婷,李岩.基于GML空间数据存储方法研究与实现[J.计算机应用.2006,26(10);2408-2412.

[56]Lars G.HBase:The DefinitiveGuide(影印版)[M].南京:东南大学出版社.2012.

[57]基于HBASE 的并行计算架构之rowkey设计篇[WB/OLJ.http:/xdataopen.blog.51 cto. com/4219560/1117864/

[58]Shapefile[WB/OL].http://zh.wikipedia.org/wiki/Shapefile

[59] The GeoTools API Guide[WB/OL].http:/ldocs.geotools.org/latest/javadocs/

[60]张榆,马友忠,孟小峰.一种基于HBase的高效空间关键字查询策略[J.小型微型计算机系统.2012,33(10):2141-2146.

[61]Wang L,Chen B, Liu Y. Distributed storage and index of vector spatial data based on HBase[C]WGeoinformatics (GEOINFORMATICS),2013 21st InternationalConference on. IEEE,2013:1-5.

[62]Fay Chang,Jeffrey Dean,Sanjay Ghemawat.Bigtable:A Distributed Storage System for Structured Data[J].ACM Transactions on Computer Systems.2008(26):262-274.

[63]HBase in action[M].Nick Dimiduk.American : Manning Publications.2012.

[64]封俊.基于Hadoop的分布式搜索引擎研究与实现[D].太原:太原理工大学.2010.

[65]张煜.一种使用Node.js构建的分布式数据流日志服务系统[J.计算机系统应用,2013,22(2):68-71.

[66]孙奇.基于MVC模式的Web开发框架RubyonRails的研究[D].北京:北京交通大学2009.

https://www.doc88.com/p-7856953827180.html

>>Mapnik for Java安装:https://www.cnblogs.com/2008nmj/p/14418994.html

posted on 2021-02-22 14:39  XiaoNiuFeiTian  阅读(581)  评论(0编辑  收藏  举报