查看原文
其他

基于Hadoop的地理国情监测高性能计算分析研究

高崟 慧天地 2019-06-30


点击图片上方蓝色字体“慧天地”即可订阅

(点击图片可放大观看,更多通知请留意文末推荐)

作 者 信 息

高 崟

(国家基础地理信息中心,北京 100830)

【摘要】随着常态化地理国情监测在我国的全面开展,地理国情时空数据规模不断增大,使得对地理国情数据综合分析和信息挖掘的要求越来越高。本文针对传统空间数据存储和分析平台存在的性能瓶颈问题,提出了一种基于Hadoop的地理国情高性能计算框架,论述了通过服务封装实现分布式并行计算能力与成熟平台地理空间分析能力的无缝聚合实现最优化地理国情分析计算的理念,并以地理国情地表覆盖面积统计为例,探讨了分布式计算技术在地理国情海量数据分析方面的适用性。结果表明,随着数据量的增加,分布式计算集群的性能优势逐渐凸显,比传统集中式空间数据库更适合于海量数据的分析计算,而集群的良好横向拓展性,也为大规模地理国情空间数据分析提供了可行解决方案,研究结果将为进一步构建开放性地理国情分析服务平台奠定基础。

【关键词】地理国情监测;海量空间数据;高性能计算;Hadoop

【中图分类号】P273 

【文献标识码】

【文章编号】1672-1586(2018)02-0050-06

  引文格式:高 崟. 基于Hadoop的地理国情监测高性能计算分析研究[J].地理信息世界,2018,25(2):50-55.

正文

0 引 言

随着第一次全国地理国情普查的圆满结束,我国从2016年开始全面进入了常态化地理国情监测阶段,通过持续监测为国家生态文明建设、社会经济发展提供高精度的地理国情时空大数据,数据规模每年可达数亿条。在常态化地理国情监测中,为了有效利用监测成果数据,需要结合多方面信息对包含100多项指标的数据进行深入分析,对空间数据分析平台带来了较大挑战,传统空间数据库及计算平台在海量空间数据挖掘分析方面表现出性能不足和拓展性差的突出问题。

传统的空间数据管理依托单节点关系型数据库,在数据管理、高并发读写、高效计算和扩展性等方面存在局限性。云计算的兴起为海量空间数据分析带来了机遇与挑战,将云计算技术与空间信息技术结合,实现对海量空间数据的分布式计算分析,逐渐成为解决海量空间数据分析计算的关键突破口。Hadoop是近年来在大数据背景下产生的分布式计算框架,它实现将存储和计算的服务分布在由大量计算机节点构成的集群上,将计算节点的数据存储和计算资源进行整合,形成协同工作机制,为大数据存储处理提供了廉价可行的解决方案。Hive是Hadoop架构下的分布式数据分析框架,能够有效利用Hadoop集群的分布式存储和计算资源,具有便捷的数据分析能力,非常适合应对大规模数据的分析处理。随着Hive技术的逐步发展,诸多行业领域也尝试将Hive分布式计算框架应用于行业大数据处理。在电信方面,Tseng J C等和王苏卫等使用Hive分析处理电信运营商产生的海量数据;电力方面,Wang D W等、王德文、于振等通过Hadoop分布式技术和Hive数据仓库来应对电力设备状态信息数据量不断剧增的问题,Shao L等将Hive应用于应对第一次全国水利监测大规模数据处理分析上,樊龙等基于Hive构建了水利监测数据平台以满足海量水利监测数据的存储和查询需求。这些成功案例均表明基于Hadoop计算集群和Hive数据分析框架在海量数据分析方面具有广泛的适用性和应用潜力。

本文面向开放性地理国情监测分析服务需要,设计了一种基于Hadoop的地理国情高性能计算框架,论述了通过服务封装实现分布式并行计算能力与成熟平台地理空间分析能力的无缝聚合实现地理国情分析计算的最优化理念,并采用地理国情地表覆盖面积统计典型应用场景探讨了分布式计算技术在地理国情海量数据分析方面的适用性,旨在为地理国情时空大数据分析提供新思路。

1、地理国情分布式计算框架

地理国情分布式计算框架设计面临的关键问题是海量空间数据的高性能存储和高性能分析挖掘。分布式计算框架的总体思路为:基于Hadoop的分布式计算平台利用分布式文件系统HDFS存储海量地理国情空间数据,利用MapReduce分布式计算框架为海量空间数据的高效计算提供底层并行计算基础,通过Hive实现对结构化空间数据的提取转化加载,在空间数据计算接口的支持下实现基于Hadoop的高效存储和高效计算,并通过服务封装实现分布式并行计算能力与成熟平台地理空间分析能力的无缝聚合,实现最优化的地理国情分析计算。下面分别对分布式框架总体结构、空间数据分布存储模式、空间分析分布计算流程以及地理国情分析协同服务模式进行阐述。

1.1 分布式框架总体结构

地理国情分布式计算框架的设计主要以实现地理空间数据的分布式分析计算为主要目标,同时要兼顾数据分析应用的多样化客观需要。本文的设计思路为:对于地理国情分析计算中的数据密集型运算,优先采用Hadoop分布式计算进行快速分析,而对于数据量不大的复杂模型计算类的密集型运算,则充分利用成熟平台的丰富空间分析计算能力,实现两者的最优化聚合与协同服务能力。对于地理国情分布式计算框架而言,其总体结构分为数据源层、Hadoop集群层、控制层以及应用层四部分,其结构如图1所示。

图1 地理国情分布式计算框架

Fig.1 Distributed computing framework of Geographical Conditions Information

1)数据层

数据源层是地理国情分布式计算的原始数据来源,一般以RDBMS空间数据库、文件系统、Web服务等方式存在,数据内容包括地表覆盖、地理国情要素、派生数据、专题数据以及其他数据等多种形式,主题一般涵盖自然方面的气温、降水、湿度、覆被、土壤、地质等,人文数据方面为人口、经济、设施、管理单元等,综合方面的土地利用、水利、林业、湿地、生态等。对于分布式集群数据装载,一般根据原始数据的存储形式和技术平台采取多种灵活方式,包括通过Sqoop从数据库加载、通过Web Service在线调用加载、通过Hadoop I/O直接读写以及第三方接口等。

2)Hadoop集群

Hadoop集群是分布式计算的主体构成,由分布式存储和分布式计算两部分构成。分布式存储系统有多种选择,对于空间数据统计分析而言,分布式存储层可以采用HDFS分布式文件系统或者HBase分布式列数据库,其中,HDFS分布式文件系统用于支撑大规模空间数据并行计算分析,而HBase则侧重于大规模空间数据的查询检索与统计报表生成等。对于地理国情分析应用而言,考虑将两者结合起来,数据查询或概略统计通过HBase分布式数据库快速实现查询反馈,而精确的空间计算分析则利用HDFS开展并行化空间计算。分布式空间计算接口一般需要将多源空间数据统一转换为文本化的空间数据,分块存储在HDFS分布式文件系统中。对于空间数据的文本化存储,常用的文本化空间数据格式有WKT、GML、GeoJSON等,也可以根据需要采用其他的数据存储格式,但所有的文本格式的数据在空间计算时都依赖相应格式的接口进行数据解析。

分布式计算是Hadoop集群实现高性能计算的关键因素,当前主流的分布式计算框架有MapReduce分布式计算模型和Spark分布式内存计算模型。MapReduce计算模型首次解决了超大规模数据难以处理的难题,而Spark模型将内存计算与分布式计算相结合实现了计算效率的几何级提升,随着分布式技术的快速发展,第三代Hadoop分布式技术结合了内存计算优势并改进了MapReduce模型,在计算效率上将明显超过Spark现有的性能水平,但是稳定版本仍在研发过程中。对于空间数据分布式计算而言,原生的MapReduce和Spark均不支持空间计算,在实际应用中需要开发专门的空间数据解析接口以及空间计算算法和接口,实现MapReduce和Spark对空间计算分析的支持。因此,在条件允许的前提下,需要随时紧跟Hadoop分布式计算技术的最新发展趋势,研发相应的空间分析接口,实现最优化的分布式计算效率,全面提升空间分析水平。

3)控制层

控制层是地理国情分布式计算框架的中间模块,连接计算框架的计算层和应用层,借助Hive的类SQL调度语言进一步简化空间分析的交互方式。控制层负责应答应用层的请求,并根据元数据进行任务解析,生成相应的分布式任务传递给计算层,同时监听计算结果并及时反馈。HiveQL是Hive的类SQL调度语言,HiveQL本身并不支持空间数据操作和分析,需要将Hadoop集群的MapReduce或Spark并行空间分析算法或接口封装为HiveQL格式,方便在Hive终端的统一调用。对于空间分析的基本操作,目前ESRI公司提供了开源GIS Tool forHadoop组件,对于基本的空间计算可以采用该组件,在不满足分析应用的情况下,需要定制开发专门的分布式空间分析组件,形成更复杂的空间分析能力。

4)应用层

应用层是分布式计算框架的用户层,通过分布式集群实现空间交互、查询统计、空间分析、模型计算及应用接口等多层次的分析应用。就地理国情而言,分析服务是地理国情监测成果数据统计、知识挖掘以及与其他专业数据融合形成有用的专项/专题信息的重要手段。与大部分专业调查相比,地理国情监测具有综合性特点,使得地理国情分析与应用平台需要具有较强的灵活性与开放性。在应用层,需要根据地理国情分析应用场景的差异研究多元化的地理国情在线分析模式,包括地理国情数据统计、地理国情指数评价、地理国情专题建模以及地理国情众包分析等。数据统计以地理国情监测成果数据或专题数据为对象,按照规则地理格网、行政区划、自然地理区域、社会经济区域等不同地理单元类型对地理国情监测成果数据进行统计计算,形成综合反映地理国情要素的空间分布状况的统计数据。指数评价是基于地表覆盖矢量数据和多级格网数据进行应用指数计算,形成反映空间分布特征的地理国情监测评价结果。专题建模对于生态、经济、人口、资源、环境、农林、工业、教育、文化等行业性监测内容,基于形成的专题数据、专题模型、服务形式,提供面向专题的地理国情建模分析能力。众包服务针对地理国情分析的多元性需求以及地理国情大数据的融合发展,构建面向众包的开放式地理国情分析服务能力,在数据库端在线开放空间计算与空间分析的服务接口以及基于元数据的在线资源目录,对于数据统计、指数评价、专题分析等功能均不能满足需求的用户,在数据库安全机制的保障下,提供线上的实时在线数据分析能力,有利于不断扩宽地理国情监测服务领域,提升地理国情监测应用水平。

1.2 空间分析分布计算流程

通用Hadoop集群采用MapReduce的并行模型实现分布式计算。本文提出的Hadoop+Hive的地理国情分布式计算模式在计算流程更为复杂,不仅需要通过Hive将空间计算解析为HiveQL的类SQL模式,更重要的是设计空间计算接口支撑Hive的空间运算。在空间数据及计算接口方面,可采取MapReduce分布式算法改写传统的空间分析算法,然后封装成Hive环境下的HiveQL接口,方便应用端的接口调用与复杂计算分析构造,而空间数据接口则采用WKT、GML、GeoJSON等通用文本型空间数据格式及解析接口,方便调用采用HDFS分布式存储的文本式空间数据参与空间计算与分析。

因此,地理国情分布式集群的计算流程主要涉及空间分析命令发送客户端、空间分析解析的Hive控制端、HDFS地理国情数据存储端、MapReduce分布式计算及空间数据接口端的指令交互与数据通信。主要空间分析计算流程为:①应用层发起数据空间分析请求,根据请求命令的内容查询MySQL元数据库中对应的表定义,若满足则进入数据文件目录查询相应的表,通过HQL找到地理国情数据属性,获取符合条件的属性值,在空间分析接口组件的支持下,完成分析命令涉及的空间数据数量查询、几何运算、空间分析、结果统计等一系列的空间计算分析过程,并在HDFS中生成临时的数据计算结果,将结果以Hive数据表的形式返回给Hive控制层,最后反馈给客户端的空间分析用户;②若用户对分析结果有进一步的计算需要,则重新发送命令给Hive控制层,Hive控制层按照上述流程将命名重新解析后发送给各个计算环节,完成计算后统一返回,从而实现关系型数据库命令行式的空间计算分析体验。分布式计算流程如图2所示。

图2 地理国情分布式计算流程

Fig.2 Distributed computing process of Geographical Conditions analysis

1.3 地理国情分析协同服务模式

通过Hive的分布式计算接口封装实现了友好的空间分析支持,为地理国情分析服务平台等业务系统奠定了良好基础。对于缺乏Hadoop或Hive应用基础的空间分析用户,有必要采取服务封装的方式实现更为便捷的分布式空间分析应用。主要服务封装方法为采用Hive API访问接口、JAVA JDBC访问接口或者Linux Shell等多种形式将Hive命令封装为通用的组件式访问接口,利用WebService技术在本地Server端发布通用服务,通过应用端服务接口对Hive的服务接口进行远程调用,内嵌至B/S模式的Web应用端或者C/S模式的客户端,实现了分布式计算资源的远程调用。

分布式计算接口的服务封装不仅实现了通用的地理国情分析与应用平台的技术集成,更满足了多样化的分析应用需要。通过服务聚合可以在应用平台层将多种计算和分析资源进行整合,实现一体化的应用服务。即对于地理国情大规模海量数据的数据密集型分析计算,优先调用Hive服务进行分布式计算,并将分析结果快速返回给应用端;对于数据量小的复杂计算过程,则优先采用成熟的空间分析模型或组件进行,避免复杂空间分析或模型计算的分布式改造成本,而且很多复杂的空间运算在逻辑上并不完全支持并行计算。因此,在满足分析应用的前提下,将Hive分布式计算和传统的空间分析计算相结合,将复杂计算过程或分析模型拆分为多个简单的计算过程,将涉及大数据量的计算过程发送给Hive集群进行高性能计算,并传递计算结果,而整个复杂模型的空间运算仍然在成熟的计算平台中进行,最大限度地发挥成熟空间分析平台的丰富接口和分布式计算平台的高效性能,满足海量数据的复杂和多源应用需要。

2、实验与分析

我国地理国情普查首次采用优于1 m分辨率的遥感影像获取覆盖全国的“山水林田湖草”综合性地理国情信息,地表覆盖数据层图斑量超过2.6亿个,地类图斑形状采集精细,几何结构复杂,常见的草地、路面等线状要素节点多达近十万个,西部地区的大面积草地、沙地等自然地类的要素多达几十个几何内环,是地理国情分析应用中计算量最大、分析难度最高的一类数据。为检验本文所设计的分布式计算方法在地理国情监测海量数据分析上的适用性,选取地表覆盖分区面积统计为测试案例,采用不同规模的地表覆盖数据,分别验证分析Hadoop分布式计算框架在计算能力上和拓展性能上的应用潜力。

2.1 测试数据

该分析涉及地表覆盖和统计单元两类数据,其中地表覆盖数据为无缝矢量多边形图斑,属性字段为地理国情信息分类码(CC),标识图斑的地表覆盖类型,统计单元一般为行政区划矢量多边形数据,主要属性字段为行政区划代码(PAC),标识行政区划多边形对应的政区,其结构见表1。

单元一般为行政区划矢量多边形数据,主要属性字段为行政区划代码(PAC),标识行政区划多边形对应的政区,其结构见表1。

表1 地理国情地表覆盖和行政区划数据结构

Tab.1 Structure of geographical conditions land cover and administrative area data

采用地理国情普查中济南市局部的地表覆盖数据作为试验数据,具体数据情况如图3所示,选取对应乡镇界线作为分区统计单元。

图3 地表覆盖试验数据

Fig.3 Overview of land cover dataset

在试验中,根据图斑数量进行分组,形成5组图斑数量递增的数据集,图斑数量依次为50 000、150 000、500 000、1 000 000、5 000 000,用于测试集群在不同数量级的计算性能。

2.2 测试场景

地表覆盖分区面积统计是地理国情基本统计的基本计算内容,主要采用各级行政区划边界裁切对应范围的地表覆盖数据,然后统计各行政区范围内的所有地表覆盖类型图斑的几何面积,主要有相交关系判断、图斑几何裁切、多边形面积计算、结果分类汇总等计算过程,其中相交关系判断、图斑几何裁切、多边形面积计算是计算量大、耗时较长的3个过程。为实现高效率计算,本实验将相交关系判断、图斑几何裁切、多边形面积计算3个过程改写为分布式计算,在完成裁切形成结果后,集中进行结果分类汇总。

测试环境为7台DELL PRECISION T7810工作站,配备1.90 GHz Intel Xeon E5的8核处理器,32 G内存,500 G硬盘,千兆网卡。操作系统采用RedHat 5.4 64位系统,JDK 1.6.0。Hadoop版本为1.0.4,Hive版本为0.10.0。空间数据存储采用HDFS分布式文件系统,空间数据采用GeoJSON文本格式存储,空间运算采用MapReduce分布式计算模型,空间计算接口采用GISTools for Hadoop接口。在完成分布式计算环境部署后,集群由1个NameNode节点和6个DataNode节点组成。采用一台DELL PowerEdge R820服务器作为对比,配备2.60 GHz Intel Xeon E5的48核处理器,248 GB内存,2 TB硬盘,服务器安装Windows Server 2008操作系统,安装Oracle 12c以及Oracle Spatial作为空间运算环境。试验设置时,将5组实验数据分别导入到HDFS文件系统和Oracle数据库中,采用相同规模数据以及相同的计算内容开展对比试验,为保证结果的可靠性,采用5次重复计算的平均时间作为实际耗时。此外,依次从1到6改变集群节点的数量,统计20 000个图斑面积分区统计的耗时,分析测试Hadoop集群的横向拓展性能,为全国规模海量数据的统计分析应用提供依据。

2.3 结果分析

5组实验数据的测试结果见表2。

表2 Hadoop分布式集群和Oracle数据库计算时间对比

Tab.2 Statistics of process times between Hadoop cluster with Oracle Spatial

从结果来看,当数据规模较小时,Hadoop集群的计算性能相对较低,地表覆盖统计分析的耗时远远高于Oracle数据库服务器;但随着数据规模的增大,Hadoop集群的耗时增速明显低于Oracle数据库服务器,Hadoop的分布式计算优势逐渐得到体现。当地表覆盖图斑个数在1 000 000个时Hadoop集群计算时间与Oracle数据库服务器基本持平,继续增加数据量时,Hadoop集群的计算性能明显超过数据库服务器。分析原因,Hive是建立在Hadoop计算集群上的分布式处理系统,在计算任务的提交和处理时牵涉到Hadoop集群的初始化、任务调度、资源分配以及集群间的网络传输,这些过程需要一定的时间。在数据量较少时,Hive的集群延迟时间甚至大于分析计算时间,而Oracle关系型数据库在计算时的系统耗时相对较少,表现为Hive集群的计算性能远不如Oracle数据库。但当数据量增大时,Hadoop集群的系统延迟耗时基本稳定,且数据计算的耗时逐步增加,延迟时间只占总耗时的小部分,此时Hive集群的整体优势逐渐体现出来。这一结论表明,Hadoop集群更适合于大数据量的分析计算,其分布式计算的资源聚合效应在应对大数据量时具有明显优势。

拓展性能测试结果如图4所示。

图4 Hadoop集群不同节点数耗时对比

Fig.4 Process time-consuming of Hadoop cluster with various nodes

从实验结果来看,Hadoop集群的计算耗时随着计算节点的增加而稳定减少,表明Hadoop集群具有较好的横向拓展性能。在应对大规模地理国情数据统计分析问题时,可通过增加计算节点不断提高Hadoop集群的整体性能,以满足全国性地理国情统计分析的实际需求。

3、结束语

本文针对传统关系型数据库在海量空间数据存储与统计分析方面的能力不足问题,基于Hadoop分布式计算技术,设计了面向大规模统计分析的地理国情高性能计算框架,并针对地理国情地表覆盖数据分区分类面积统计典型应用场景,实现了地理国情地表覆盖数据分区分类统计分析试验,验证了Hadoop集群在地理国情统计分析性能和集群的横向拓展性能。实验结果表明,Hadoop集群在海量地理国情地表覆盖数据分布式存储和计算方面比关系型数据库服务器具有更好的性能,且通过集群节点的逐步增加实验验证了集群良好的横向拓展性能,为不断增加的海量地理国情空间数据存储和计算提供了行之有效的解决方案。

目前,该分布式计算框架仅在较小规模的Hadoop集群上验证了地理国情分布式计算分析的可行性,且目前采用的MapReduce分布式计算模型在计算效率上并不能真正发挥计算机硬件的性能,并且试验数据在规模上与全国规模地理国情监测数据存在非常大的差距,因此下一步将从集群升级、内存计算技术、测试数据规模等方面深入开展研究,包括尝试Hadoop集群与HBase分布式数据库的整合,提高查询检索及分布计算的存储和IO性能;条件允许的情况下,进一步增加集群的节点数目或者基于高性能服务器构建集群,使得计算平台的性能能够满足实际应用水平;深入研究基于Spark的分布式内存计算技术,研制地理国情空间分析接口组件,全面提升分布式计算效率。此外,也将致力于构建满足地理国情分析应用的开放性地理国情分析平台,通过服务封装将分布式计算集群与数据库一体机云平台等成熟分析平台相结合,实现Spark数据密集型与数据库云计算密集型的协同效应,满足全国规模的地理国情监测大数据的基本统计、专题分析与时空建模的应用需要。

来源:地理信息世界(微信公众号:地理信息世界GeomaticsWord,版权归原作者及刊载媒体所有)

荐读

点击下文标题即可阅读

地理国情监测与基础测绘联合生产外业作业系统设计思考

更地理,更中国!李德仁院士论地理国情普查和监测的创新

全球100款大数据工具汇总!

李维森:试点5年,时空大数据与云平台建设将继续加大力度

编辑 / 孙浩南  审核 / 张胜威 郭晓非

指导:万剑华教授(微信号wjh18266613129)

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存