PaaS平台Hadoop在GIS数据分析中的应用

2012地理信息开发者大会(简称:WGDC)在北京国家会议中心举行,在会议第二天“Map+与开发者训练营”分会场上,来自3sNews新闻周刊的特约撰稿人蒋波涛博士为大家带来题为《PaaS平台Hadoop在GIS数据分析中的应用》的演讲。

为期两天的2012地理信息开发者大会(简称:WGDC)在北京国家会议中心举行,本次大会以“新技术、新模式、新商业”为主题,是地理信息领域最具影响力的技术性盛会,其宗旨是不断引领和促进地理信息技术的创新与变革。在第二天“Map+与开发者训练营”分会场,来自3sNews新闻周刊的特约撰稿人蒋波涛博士为大家带来题为《PaaS平台Hadoop在GIS数据分析中的应用》的演讲。

以下为文字实录:

我跟大家分享的是《PaaS平台Hadoop在GIS数据分析中的应用》。刚才百度和诺基亚都已经做好了大餐,包括开源软件也是,你现在用开源软件发布一个地图应该说是非常简单的事情,不管是数据库也好,还是切图的也好,或者是最终能发布出来也好。我现在要讲的东西可能你自己要做很多,充分发挥自己的思路或者是技巧。当然我会讲一个例子,就是如何把我们这种空间的查询关系转换一种思路,在大数据库里,或者是在这种数据库处理当中转换一种思路,解决问题。

我的介绍包括云计算大数据,Hadoop的介绍,介绍一下MapReduce的并行计算机制,其实它和地图一点关系都没有,Map就是一个映射,就如同Project在测绘领域是投影,而不是工程。还有就是怎么样用Hadoop里解决我们的问题,它的确可以解决问题,但是解决的绝对不是说把地图去存储,去可视化,去做查询,不是做这个事情的。最后是一个结论。

现在比较热门的词汇是云计算,大数据,人们都在谈论云计算,大家也把它分成了三种类型。IaaS、Paas、SaaS,他们编了一个大数据,他们能够提供的存储容量非常高了,但是后来看了一下,好像我们调的影像数据加起来也才10几个TB,和他们宣传的大数据的量,好像我们地理行业永远够不上那个标准。这个大数据可能我们所谓的数据也不可能有那么大,或者我们一般的影像数据或者是矢量数据有没有那么大。我们现在还在讨论一个问题,包括我们现在GIS的这种公司也在讨论自己的软件,是不是云平台商,是云GIS的软件。我觉得这个讨论好像也没有什么必要。因为从云计算本质来讲,可能软件或者服务放在互联网任何一个地方,用户感觉不到,你只要能够使用它,通过网络使用就够了。不管是我们开源的软件也好,或者是商业公司软件,不管是超图或者是什么,如果有一天它的软件能达到这种效果了,让你感觉不到你有什么样的困难,或者是他能通过在线Web服务的方式提供的话,都是云计算的模式。我后来也找了一下维基百科上关于云计算的定义,是基于互联网的计算方式,通过这种计算方式,我们可以共享软硬件的资源和信息,用户不用关心你的资源从哪里来,信息从哪里来,甚至你计算的服务器从哪里来。可能是租用的,可能是免费的,也可能是收费的,这个都不成问题。我们现在要讨论的问题就是说,怎么样自己来做一个小型的东西,写论文可以,或者是最终做商业实践也可以。今天上午方正国际的周总介绍,他们自己也用Hadoop在解决一些问题。

现在把云计算分为三个层次,我要介绍的是中间这个曾经。IaaS就是设施及服务,我们现在把它已经抽象成为我们去买一堆服务器,我们去装一个System Center或者是一个VMware,你虚拟出一大堆东西出来,或者是有一个软件管理这一堆虚拟机,当你需要的时候,虚拟化出一个新的系统出来,或者是你不需要的时候关掉。现在提供IaaS服务的,除了很多我们传统的机房以外,现在盛大、阿里也在提供虚拟机,主要去设不同的CPU、内存、硬盘或者是带宽,交多少钱就可以去使用,也不用担心它在什么地方。其他更多的是SaaS,很多软件都称为是SaaS的平台,就在上面可以使用,我觉得这个问题不大。

唯一的一点就是说,中间这个PaaS,因为它是需要建立在基础设施及服务上面的一种框架,一种应用。可能计算的结果需要提供给SaaS,就显得特别困难。因此我们看到,很多公司也好,它自己也似乎从来不称自己的软件为PasS平台,这个可能是比较难的。PaaS难在什么地方?首先是一个应用的框架,它提供一个东西,一个插件,比如说插件外面一个架子,你要在这个架子里面写东西,才能完成你自己的任务。它是一个Long time,提供一个运行的环境。一般代码写好以后,你可以用这个Long time去做执行和处理的一些工作。它可能是一个工作流的环境,也就是说,这个数据的处理是有始有终,中间的过程是预先给你规定好的。我们可以在这个过程当中加入自己的一些思路和想法,这也是Hadoop最终要解决的问题。

我们的大数据从何而来?社会化的网络,我们最近注意一下超图他们做的GIS精彩,开发者已经把微博和GIS联系了,产生了大量的数据点,这是非常重要的一件事情。我知道一个例子,电子商务会存在最后一公里的问题,有些电子商务商可能有一些想法,就是在我们的一些城市里面,比如说收货比较聚集的地方去建一个提货站,你到那里去提货,减少最后的问题。但是对于电子商务来讲也有问题,它每天的交易量可能上百万、上千万,把它变成地址,以后会有存储,会有检索和查询这样的问题。然后是智能手机的一些普及,图片的共享,这是一些非结构化的数据。所谓非结构化就是说,不能存到数据库。电子商务的应用中的地名地址数据也是一个庞大的数据源,还有我们地理信息数据采集的尺度越来越小,带来的数据也越来越多。比如说飞机飞过一次,拍这个点,这个点一出来,应该是说上千万、上亿的点,都出来了,所以说数据量太大。

我们来介绍Hadoop这样一个软件体系。为什么放一驾马车放在这里,是借用一个故事。我们人类赶一匹马去拉货,比如说这个货太重了,我们不会去培养一匹更大的马,繁殖几代,变成以前的高几倍,变成马力更大,我们不会,我们用两匹或者是三匹马去拉,这就是一个变相的思维。同样我们在现实的生活或者工作中,处理数据的计算量很大,可能有几十台服务器,或者是在PC机上去做。我们能不能分解成多个用户?在多台计算机上一起做?因为我们一般来讲,有些用户可能是临时性的,也不可能给你再去多购买很多硬件。Hadoop就是秉承这样一个思路,把任务分解,然后不同的任务交给不同的计算节点,这个计算节点可能很简单,就是不同的PC机来执行。它可以做什么呢?比如说从数百万份的气象站记录里面获得某一年份的最高或者是最低温度记录,可以记录一年或者是几年的数据,这种并不适合于Hadoop来做,因为Hadoop适宜于做少的大文件,这样的话,它是为每一个文件开启一个计算进程。如果你真的是几百万个这样的文件,每个文件有那么一两兆来给它来做的话,它就要反反复复开启好几百万个进程,这个实际上是得不偿失的。对于栅格数据进行地图的分析,这是我自己做过实验的,的确非常好,它把栅格数据当成一个矩阵,互相之间进行地图算法的计算,最后再融合,形成一份或者是多份数据。还可以在架构上构建地理脱铺网络的数据集,我自己也做过相应的实验,也是可行的。或者是Web海量信息的检索,这个实际上是Hadoop提出的一套初衷,它为什么提出来?最开始就是为了解决这个问题的,以及最后的这种海量数据的挖掘,包括空间数据的挖掘,也可以解决这些问题。