基于云平台的遥感大数据管理方法毕业论文
2020-02-13 19:37:58
摘 要
目前,遥感数据的获取方式越来越多样化,但主流趋势仍是通过政府或私营企业进行遥感影像数据采集整理,并将数据发布云服务器上,用户可通过浏览器登录相应网址并进行免费或付费下载。而随着互联网技术的深入发展,人们不仅逐渐适应这种服务方式,也逐渐接受这种理念。目前各个卫星都有各自的专门代理平台,但是基于云平台的数据共享方案仍处于发展阶段,彼此间缺乏基于共享的遥感数据,和成熟的专业处理数据共享的云平台
基于这个现状,本文提出一种基于Hadoop集群的遥感数据云端存储并共享的方案,并与之相应地开发了一个小型的系统进行模拟。该平台利用Hadoop分布式文件系统——HDFS的大量性、高效性的特点,可用于存储内存占量巨大的遥感影像,同时利用其高效性特点可实现影像的快速上传和下载。本项目结合MySQL数据库,利用MySQL数据库高效便捷的数据处理功能,实现数据检索的高效性。除此之外,还在数据共享云平台基础上进行延伸,提出了一种多Agent的任务管理功能,以供用户进行任务分解后将不同的难题交予各擅长该领域的人员进行解决,最后整合后完成总体复杂任务。
本系统是基于云服务的理念进行开发的,对于云服务与遥感数据管理进行了有机结合,同时基于问题解决的目的,更延伸了任务管理的机制,对于其他人员的后续研究有明显积极意义。
关键词:Hadoop集群、云平台、数据共享、任务管理
Abstract
At present, the acquisition of remote sensing data is becoming more and more diversified, but the mainstream trend is still to collect and organize remote sensing image data through the government or private enterprises, and release the data to the cloud server. Users can log in the corresponding website through the browser and download the data for free or for payment.With the in-depth development of Internet technology, people not only gradually adapt to this service mode, but also gradually accept this idea. However, there is no effective cloud-based data sharing scheme in the market at present, let alone a platform that can meet the needs of data sharing between users.
Based on this situation, this paper proposes a scheme of remote sensing data cloud storage and sharing based on Hadoop cluster, and accordingly develops a small system for simulation.This platform makes use of the large quantity and high efficiency of Hadoop distributed file system -- HDFS, which can be used to store remote sensing images with a large amount of memory and realize the fast uploading and downloading of images with its high efficiency.Combined with MySQL database, this project utilizes the efficient and convenient data processing function of MySQL database to realize the high efficiency of data retrieval.In addition, it also extends the data sharing cloud platform, and proposes a multi-agent task management function for users to solve different problems after task decomposition to people who are good at this field, and finally complete the overall complex tasks after integration.
This system is developed based on the concept of cloud service, which organically combines cloud service and remote sensing data management. At the same time, based on the purpose of problem solving, it extends the mechanism of task management and has obvious positive significance for the follow-up research of other personnel.
Key Words:Hadoop cluster, cloud platform, data sharing, task management
目录
摘要 I
Abstract II
第1章 绪论 1
1.1 研究背景 1
1.2 研究意义 1
1.3 研究内容 2
第2章 研究理论基础 4
2.1 Hadoop 4
2.2 MySQL 4
2.3 前端技术 5
2.4 Tomcat 5
2.5 Maven 6
2.6 高德API 6
2.7 其他工具 7
第3章 系统设计 8
3.1 总体设计 8
3.2 核心功能实现 9
3.2.1 数据共享功能 9
3.2.2 数据库连接 11
3.3 数据库设计 12
第4章 系统开发 16
4.1 数据共享功能 16
4.2.1 数据上传功能 16
4.2.2 数据检索功能 17
4.2.3 数据下载功能 18
4.2.4 数据删除功能 19
4.1 数据共享功能 19
4.2.1 任务发布与任务申请 19
4.2.1 任务自动调配 22
第5章 结论与展望 23
5.1 结论 23
5.2 展望 23
参考文献 25
致谢 26
第1章 绪论
1.1 研究背景
对于大量遥感影像数据的存储与管理,目前的主流趋势是由政府或私营企业对数据进行采集整理,并将数据存储于云服务器上,用户可通过浏览器登录相应网址并进行下载。针对在线遥感数据的存储,管理与访问方法,在国外主要有美国NASA开发了虚拟地球World Wind,Google Earth影像地球系统提供了高效率的三维视图,欧空局 ESA数据中心采用基于任务的分布式存储,日本开发出模拟地球自然地理过程的地球模拟器(Earth Simulator)。而在我国则有由国家测绘局主导建设的国家地理信息公共服务平台“天地图”网站可以为公众提供了一个基于大型互联网的统一地理信息服务平台,另外就是中国资源卫星应用中心,国家卫星气象中心和国家卫星海洋应用中心三个平台也各自提供了遥感数据存储方式各有特色的平台[1]。以上例子都是通过国家力量或者大型私营企业奖励起来的遥感数据获取渠道。通过这种方式,可以提供定期更新的遥感基础数据库,用户能按照自己的实际需要使用遥感数据,获取遥感信息服务。
目前遥感数据的应用越来越广泛,对于遥感数据的时空、辐射分辨率的要求也在不断提高,可获取的遥感数据量以指数级趋势增长 [2,3],遥感数据的获取渠道也在不断增加。当今时代是互联网时代,共享的理念已经深入人心,本文主要是提出一种基于云平台的遥感大数据管理方法,用户在注册账号后可以上传分享遥感数据,也可以获取他人上传的数据,打开一个互利互惠的局面。通过遥感云服务技术设计的遥感数据分布式云存储和共享云应用服务,或许将成为未来的发展趋势。
1.2 研究意义
对一个国家而言,遥感数据的重要性不言而喻。遥感数据的来源越来越丰富,时空、辐射及光谱分辨率和数据类型不断增加,随之而来的是遥感数据量的激增,数据占据内存的增加,同时遥感数据的处理速度在不断增加,遥感数据的多样性和复杂性程度也在不断提高,遥感数据已经呈现出明显的大数据特征[4]。而目前云计算技术已经是时代发展的必需技术,其发展的速度迅猛,为人们的日常生活带来了诸多的便捷[5]。
目前对于遥感数据的引用,除了人们日常接触到的电子地图外,其应用主要还是有专业研究人员使用其进行基于遥感影像数据的专题项目分析研究,而随着遥感技术的发展,越来越多的学科看到其作用,并将会用到遥感影像协助进行分析研究。此外,遥感数据量巨大,随着遥感影像传感器、雷达传感器和航空航天对地观测技术的发展,遥感数据的数据量不断增大。目前对地观测的单颗卫星每日获取的遥感影像数据量需要以 TB 级计算,这些基于单位时间的范围内获取的日益庞大的数据,造成了存储、分析、管理上的许多困难[5]。
庞大的数据量以及日益增多的需求量,使得云计算与遥感进行结合变得非常必要。利用云计算超大规模、虚拟化、高可靠性、通用性、高可扩展性、按需服务、极其廉价等诸多特点,可以有效地管理高维、巨量、全球分布组织的遥感数据。本研究基于云计算技术,设计可获取遥感信息并进行应用的云平台,建立基于云端服务器的遥感影像数据获取渠道,使用户无需事先购买,在需要时再通过云平台进行相应的数据获取服务。
本次研究主要是提出一种基于云平台的遥感大数据管理方法,通过构建集群让多台性能一般的服务器可以协同处理信息,并结合基于大数据管理策略的遥感数据管理算法完成原型系统开发,提升平台运行效率,让用户可以通过云计算技术从云端获取快速发布、共享遥感数据。遥感大数据管理云平台,也是遥感云服务技术的一种基础体现,利用云计算大数据技术,提升资源整合、大数据管理和资源共享的保障能力 [6]。
1.3 研究内容
本项目研究的是基于云计算的遥感信息大数据发布与信息共享策略,构建一个可以实现遥感信息发布与共享的原型系统。该系统平台是基于云计算理念设计的遥感数据云端存储、管理和共享解决方案,以Hadoop分布式文件系统(HDFS)作为云计算环境,为应用提供云端数据存储的媒介 [7]。云平台系统开发主要包括前端和云端后台两个部分,前端采用HTML,CSS,JavaScript等设计界面和调用后台提供的接口,后端则采取J2EE技术和云存储技术进行设计和具体功能实现。
云平台整体由用户信息管理、云数据管理两个应用子系统组成,每个子系统由数个业务接口组成,业务接口使用Java Servlet以标准的RESTful接口形式实现,操作反馈信息与查询结果等结构化数据以Json格式返回客户端,文件下载以数据流的形式传输。
系统平台将搭建在基于Hadoop构建的集群上,这比起使用单一云服务器能拥有更多的计算资源,也能更好地满足用户的需求。同时,由于搭建在同一集群,运用分布式存储算法构建虚拟磁盘空间,能有效提升遥感数据存储量和优化存储结构。本文所设计的基于云计算的遥感影像数据共享云平台和任务发布功在实践中能起到很好的作用。
本遥感数据管理云平台系统由基础层、数据层、应用层三部分组成。基础层为网络互通且能通过外部互联网连接的n台云服务器组成(可根据实际需求更改数量)的分布式集群;数据层由HDFS和开源数据库MySQL组成,其中使用HDFS分布式文件系统作为云存储技术核心,用于数据的分布式存储、共享和管理,使用开源数据库MySQL管理用户账户及个人信息数据;应用层面向用户提供用户注册、用户登录及身份验证、用户信息修改、数据检索、数据上传与下载、任务发布和领取等服务。
在最为核心的云存储系统(即HDFS)中,会提供一个资源池,用于存储所有用户分享的遥感影像数据,通过对数据并将值与账户信息绑定的方式实现各用户空间仓库路径的加密和隔离。用户账号通过注册获取,用户可以对用户关键信息的修改(如密码,任务请求等)。用户也可以通过指定路径进行遥感数据的发布、下载、检索等功能,但考虑到数据安全问题,数据删除功能仅可由管理员进行,用户不可删除他人数据,若希望删除自己上传数据需向管理员发送申请,由管理员进行删除。在用户信息操作的应用子系统中,为了提高系统并发降低响应耗时,使用开源数据库连接池技术Druid进行数据库的连接,和用户信息的管理,支持多线程连接,但是考虑到本项目的硬件现状,仅可支持少数几个用户同时连接。
第2章 研究理论基础
2.1 Hadoop
分布式系统(Distributed System)是一组由多台独立的低质量计算机节点在网络下协调工作,完成统一任务的计算机集群系统[8]。其设计思路是通过利用多台廉价、普通的计算机完成单台计算机难以完成的存储计算等任务。
目前,常见的分布式系统主要有Hadoop、Storm、Spark 等。其中,Hadoop 应用最为普遍。本项目中使用的是基于Hadoop的分布式文件系统HDFS。HDFS的设计目的是用来部署在价格低廉、性能一般的硬件设施上,通过利用这些机器彼此联合在一起,HDFS可以共同存储并处理更多更复杂的数据,获得单台高性能机器同等甚至更高的更高效率。同时HDFS本身的高吞吐量有助于访问数据,可以用来进行超大数据集的存储与分析。
Hadoop需要部署在云服务器上,配置时需要进行多步操作,具体参考网上教程,在此就不详述。需要提的是在安装Hadoop之前还需要下载并在阿里云服务器上安装JDK,并配置JDK环境变量。本系统使用的是8.0版本的JDK和2.7.7版本的Hadoop。在验证JDK环境变量设置成功后,安装Hadoop才能正常使用。另外就是需要建立Hadoop的用户,用于获取Hadoop的权限,以实现发布数据到Hadoop和从Hadoop下载数据的核心功能。
由于本项目属于个人项目,并不要求系统具备极大的运算能力,所以本项目采用的是一个伪分布式文件系统,只部署在一台服务器上,而非以多台服务器构成一个Hadoop集群,但是其功能是等价的,只是性能有所差异,可以在伪分布式系统上运行成功的程序,基本上只需要经过简单调试就可以再真正的分布式系统上成功运行。
2.2 MySQL
MySQL是一个关系型数据库管理系统,MySQL可以很好地服务于 WEB 应用方面。该数据库的开发者对其给予了高度评价,认为 MySQL 极可能成为目前最快的数据库。MySQL数据库是开放源码的关系型数据库, 使用标准化语言SQL来管理、检查、维护数据库[9]。由于其卓越的性能和稳定的服务, 可以形成一个良好的环境。MySQL的软件体积小,比起大型数据库,不需要进行大量的配置和复杂的操作,安装使用方便快捷,且易于维护,与一些大型数据库相比,其配置和操作管理更为简便,维护成本低。对于个人用户而言,其性能也能完全满足研究项目的需求。
本项目中需要将数据库部署在云服务器上,并通过浏览器来实现信息交互,以控制数据共享和任务调配等各个流程,综合各种因素考虑,MySQL数据库是目前在合适的数据库管理系统。至于具体的数据库设计会在下文给出。
2.3 前端技术
系统前端设计采用JSP文件进行前端界面设计,jsp是一种动态网页开发技术,是在原始HTML文件进行延伸,在其中插入Java程序段和JSP标记,最终形成JSP文件。在jsp中主要是利用HTML,CSS和Javascript进行实现前端界面设计工作。利用HTML进行主体框架的搭建,决定网页总体结构和内容;利用CSS设定网页的表现样式,对控件的外观属性和位置进行调整;再利用JavaScript控制网页的行为,进行前端一些方法的实现,主要包括界面跳转,窗口显示隐藏等。此外jsp还可以在lt;%%gt;中使用java代码的语法以及直接调用后端的方法,进一步方便开发人员的使用。用JSP开发的Web应用能在Linux下运行,而阿里云的操作系统统一都是Linux,所以也能满足要求。
在Jsp页面传值给后台时,一般分为4种方法,分别是:
(1)通过Form表单提交传值,表单中action='xxServlet'表示java后端相应的服务器程序,在服务器端通过 Java代码 request.getParameter(控件名)来获得传递的参数,method='post'/'get' 表示传递参数的形式POST提交数据是不可见的,GET是通过在url里面传递的;
(2)通过隐藏域传值,在表单中加入一个隐藏域来提交到服务器端,隐藏域的类型定义为“hidden”
(3)通过URL传值,如href='xxServlet? id=${U.id}amp;name=${U.name}”,在 “?”号后的是要传的参数和其值,当有多个参数时,参数与参数之间用“amp;”进行分离。
(4)通过JavaBean进行传值 即通过Java中的自省机制,将所有表单的值传入到一个JavaBean中。
在本次项目中使用(1)方法进行参数传递。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: