李雪梅,邢俊峰,劉大偉,王海洋,2,劉瑋,2
1.煙臺(tái)中科網(wǎng)絡(luò)技術(shù)研究所,山東 煙臺(tái) 264003;2.中國(guó)科學(xué)院計(jì)算技術(shù)研究所,北京 100080
基于HBase的海量GIS數(shù)據(jù)分布式處理實(shí)踐
李雪梅1,邢俊峰1,劉大偉1,王海洋1,2,劉瑋1,2
1.煙臺(tái)中科網(wǎng)絡(luò)技術(shù)研究所,山東 煙臺(tái) 264003;2.中國(guó)科學(xué)院計(jì)算技術(shù)研究所,北京 100080
設(shè)計(jì)了一種基于分布式數(shù)據(jù)庫(kù)HBase的GIS數(shù)據(jù)管理系統(tǒng)。系統(tǒng)優(yōu)化了柵格數(shù)據(jù)的生成和存儲(chǔ)過(guò)程,將海量柵格數(shù)據(jù)直接寫入HBase存儲(chǔ)、索引。同時(shí),針對(duì)矢量空間數(shù)據(jù)的存儲(chǔ)、索引與檢索,提出了一種新的rowkey設(shè)計(jì),既考慮經(jīng)緯度,又考慮空間數(shù)據(jù)類型和屬性,使得在按空間位置檢索矢量地理信息時(shí),能通過(guò)HBase的rowkey迅速定位需要返回的數(shù)據(jù)。在H Base的集群環(huán)境上用真實(shí)GIS數(shù)據(jù)對(duì)上述方法進(jìn)行了驗(yàn)證,結(jié)果表明,提出的系統(tǒng)具有較高的海量數(shù)據(jù)存儲(chǔ)和檢索性能,實(shí)現(xiàn)了海量地理信息數(shù)據(jù)的高效存儲(chǔ)和實(shí)時(shí)高速檢索。
大數(shù)據(jù);HBase;柵格數(shù)據(jù);矢量數(shù)據(jù);rowkey
在全球大數(shù)據(jù)蓬勃發(fā)展的大背景下,我國(guó)也緊抓發(fā)展機(jī)遇。2015年中國(guó)大數(shù)據(jù)技術(shù)大會(huì)發(fā)布了《2016年大數(shù)據(jù)技術(shù)發(fā)展趨勢(shì)》,指出:可視化推動(dòng)大數(shù)據(jù)平民化、多學(xué)科融合與數(shù)據(jù)科學(xué)的興起、大數(shù)據(jù)提升社會(huì)治理和民生領(lǐng)域應(yīng)用等將成為未來(lái)大數(shù)據(jù)的發(fā)展趨勢(shì)[1]。本文順應(yīng)大數(shù)據(jù)發(fā)展趨勢(shì),在大數(shù)據(jù)平民化、大數(shù)據(jù)民生應(yīng)用等方面進(jìn)行研究。
傳統(tǒng)地理數(shù)據(jù)處理與存儲(chǔ)主要使用Oracle與PostgreSQL的擴(kuò)展PostGIS等關(guān)系型數(shù)據(jù)庫(kù),但關(guān)系型數(shù)據(jù)庫(kù)在針對(duì)海量數(shù)據(jù)的管理、高并發(fā)讀寫、難擴(kuò)展、對(duì)非結(jié)構(gòu)化數(shù)據(jù)處理等方面已經(jīng)開(kāi)始制約地理信息系統(tǒng)的發(fā)展。而HBase采用的基于列的存儲(chǔ)技術(shù)以及高可用、高可靠、高性能、可擴(kuò)展的特點(diǎn)在處理非結(jié)構(gòu)化地理柵格數(shù)據(jù)和具有離散稀疏特性地理矢量數(shù)據(jù)時(shí)有著天然的優(yōu)勢(shì)。本文已經(jīng)成功地將柵格數(shù)據(jù)與地理數(shù)據(jù)中的矢量數(shù)據(jù)加載到HBase,并進(jìn)行了檢索測(cè)試,其檢索響應(yīng)時(shí)間可達(dá)到毫秒級(jí)。
本文的創(chuàng)新點(diǎn)在于當(dāng)生成柵格數(shù)據(jù)時(shí)在mapnik切片的基礎(chǔ)上做了優(yōu)化,使柵格數(shù)據(jù)不經(jīng)過(guò)磁盤直接寫入HBase,并設(shè)計(jì)了柵格數(shù)據(jù)在HBase中存儲(chǔ)的rowkey以及GIS(geographic information system,地理信息系統(tǒng))矢量空間數(shù)據(jù)在HBase中存儲(chǔ)的rowkey。
2.1 GIS數(shù)據(jù)
GIS數(shù)據(jù)包括兩種最基本的組織方式:柵格數(shù)據(jù)和矢量空間數(shù)據(jù)。
柵格數(shù)據(jù)是以二維矩陣的形式表示空間地物或現(xiàn)象分布的數(shù)據(jù)組織方式,每個(gè)矩陣單位稱為一個(gè)柵格單元(cell),在各個(gè)柵格單元上給出相應(yīng)的屬性值來(lái)表示地理實(shí)體。柵格數(shù)據(jù)有屬性明顯、定位隱含的特點(diǎn)。隨著數(shù)據(jù)壓縮技術(shù)和計(jì)算機(jī)性能的提高,柵格數(shù)據(jù)量大的缺點(diǎn)不再突出,柵格數(shù)據(jù)在地圖分析中的作用越來(lái)越明顯。柵格數(shù)據(jù)可以是數(shù)字航空照片、衛(wèi)星影像、數(shù)據(jù)圖片,甚至可以是掃描的地圖。本文所提到的柵格數(shù)據(jù)即對(duì)開(kāi)放街道地圖(OpenStreetMap,OSM)進(jìn)行切片獲得的柵格數(shù)據(jù)。
矢量空間數(shù)據(jù)利用點(diǎn)、線、面及其組合體的形式表達(dá)現(xiàn)實(shí)世界,具有定位明顯、屬性隱含的特點(diǎn)。同時(shí),矢量空間數(shù)據(jù)具有數(shù)據(jù)結(jié)構(gòu)緊湊、冗余度低、表達(dá)精度高、圖形顯示質(zhì)量好、有利于索引和檢索分析等優(yōu)點(diǎn),在GIS中得到廣泛的應(yīng)用,特別在小區(qū)域(大比例尺)制圖中充分體現(xiàn)了其精度高的優(yōu)點(diǎn)。本文所提到的矢量數(shù)據(jù)是指由政府提供的路網(wǎng)數(shù)據(jù)、管網(wǎng)數(shù)據(jù)、農(nóng)村地塊數(shù)據(jù)及部分城市的天地圖矢量空間數(shù)據(jù)。
2.2 HBase
HBase是一個(gè)基于分布式的、面向列的、可伸縮的、主要用于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)用途的開(kāi)源數(shù)據(jù)庫(kù)。HBase是Google Bigtable[2]的開(kāi)源實(shí)現(xiàn)。其中,Hadoop[3]HDFS為HBase提供文件存儲(chǔ)功能;MapReduce為其提供海量數(shù)據(jù)計(jì)算能力;ZooKeeper為其提供協(xié)調(diào)服務(wù);Pig和Hive為其提供高層語(yǔ)言支持,使其可以進(jìn)行數(shù)據(jù)統(tǒng)計(jì);Sqoop為其提供RDBMS數(shù)據(jù)導(dǎo)入功能。ETL工具也能為其提供高速的數(shù)據(jù)導(dǎo)入/導(dǎo)出功能。
HBase支持按照主鍵rowkey和主鍵的range查詢,可以通過(guò)HBase提供的API(application programming interface,應(yīng)用程序編程接口)進(jìn)行條件過(guò)濾查詢,也可以通過(guò)編寫MapReduce程序,實(shí)現(xiàn)表數(shù)據(jù)的訪問(wèn)和分析。HBase有如下特點(diǎn):
● 對(duì)于數(shù)據(jù)類型,HBase可以存儲(chǔ)動(dòng)態(tài)、靈活的數(shù)據(jù)模型,并不限制存儲(chǔ)數(shù)據(jù)的種類,可以存儲(chǔ)結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù);
● HBase不使用SQL語(yǔ)言,也不強(qiáng)調(diào)數(shù)據(jù)之間的關(guān)系;
● 存儲(chǔ)靈活,可以在一行的某一列存儲(chǔ)一個(gè)整數(shù),而在另一行的同一列存儲(chǔ)字符串,對(duì)于空的列不占用存儲(chǔ)空間,適合存儲(chǔ)稀疏數(shù)據(jù);
● 在集群上運(yùn)行,可存儲(chǔ)海量數(shù)據(jù)。
傳統(tǒng)的GIS數(shù)據(jù)存儲(chǔ)大多是關(guān)系型數(shù)據(jù)庫(kù),但關(guān)系型數(shù)據(jù)庫(kù)在海量數(shù)據(jù)的管理中面臨許多問(wèn)題,包括高并發(fā)讀寫、難擴(kuò)展等,已經(jīng)成為制約GIS發(fā)展的瓶頸。同時(shí),GIS數(shù)據(jù)中的圖片、影像數(shù)據(jù)等都是非結(jié)構(gòu)化的,關(guān)系型數(shù)據(jù)庫(kù)不能合理地處理非結(jié)構(gòu)化數(shù)據(jù)。而HBase以其高可靠性、高擴(kuò)展性、高容錯(cuò)性、高效性以及適用于海量非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)處理分析的優(yōu)勢(shì)在處理GIS數(shù)據(jù)方面提供了另一種思路,即解決HBase應(yīng)對(duì)GIS中的兩大挑戰(zhàn):大規(guī)模數(shù)據(jù)處理的時(shí)延和空間位置建模[4]。
3.1 柵格數(shù)據(jù)
3.1.1 柵格數(shù)據(jù)獲取
本文柵格數(shù)據(jù)獲取、寫入流程如圖1所示。
傳統(tǒng)的柵格數(shù)據(jù)的存儲(chǔ)方式主要有兩種:以文件目錄的形式存儲(chǔ)和存儲(chǔ)在傳統(tǒng)數(shù)據(jù)庫(kù)中。
若柵格數(shù)據(jù)以文件目錄形式存儲(chǔ),其目錄結(jié)構(gòu)為zoom_level/x_coordinate/y_ coordinate.png。圖2展示的是對(duì)北京市切片獲得的第9層?xùn)鸥駭?shù)據(jù)。
圖2 柵格數(shù)據(jù)存儲(chǔ)形式和目錄結(jié)構(gòu)
如果柵格數(shù)據(jù)以文件目錄形式存儲(chǔ)在本地磁盤,對(duì)大范圍地圖切片會(huì)產(chǎn)生海量柵格數(shù)據(jù)。在生成柵格數(shù)據(jù)時(shí)速率逐步降低,影響切片性能。本文對(duì)切片腳本做了修改,略去文件寫磁盤步驟,將柵格數(shù)據(jù)文件進(jìn)行base64轉(zhuǎn)碼后直接存至HBase。
如果海量柵格數(shù)據(jù)存儲(chǔ)在傳統(tǒng)數(shù)據(jù)庫(kù)(如MySQL、Oracle等),主鍵和索引問(wèn)題會(huì)導(dǎo)致讀寫速度越來(lái)越慢,并且存儲(chǔ)量有所限制。
基于以上原因,結(jié)合HBase在大數(shù)據(jù)存儲(chǔ)方面的優(yōu)勢(shì),本文研究了柵格數(shù)據(jù)在HBase上的存儲(chǔ)和索引,在HBase的集群環(huán)境上對(duì)柵格數(shù)據(jù)進(jìn)行了驗(yàn)證,該方法具有較高的存儲(chǔ)能力和檢索能力。
圖3 柵格數(shù)據(jù)存儲(chǔ)方式
圖4 柵格數(shù)據(jù)展示
3.1.2 柵格數(shù)據(jù)的索引
如上所述,層級(jí)編碼、X坐標(biāo)與Y坐標(biāo)表示的不僅是一個(gè)瓦片數(shù)據(jù)的索引,同時(shí)還是瓦片數(shù)據(jù)的地理位置標(biāo)志,通過(guò)數(shù)學(xué)公式在查詢和檢索時(shí),行列編碼和經(jīng)緯度之間可以實(shí)現(xiàn)相互轉(zhuǎn)換。本文中柵格數(shù)據(jù)存于HBase,rowkey的表示方式為zoom_ level、x_coordinate、y_coordinate,列簇(column family)為i,列(column)為png_info。柵格數(shù)據(jù)在系統(tǒng)中的展示形式如圖3、圖4所示。
3.1.3 柵格數(shù)據(jù)的檢索
柵格數(shù)據(jù)的檢索主要是返回指定區(qū)域的所有柵格信息,以編排好的一張地圖的形式返回。柵格數(shù)據(jù)的索引方式使得需要先確定X、Y坐標(biāo)的范圍,再在返回的結(jié)果上進(jìn)行篩選,編排出符合條件的所有切片合成一張地圖。本文柵格數(shù)據(jù)的檢索是以服務(wù)形式提供,若檢索第9層,X坐標(biāo)為421,Y坐標(biāo)為194的柵格數(shù)據(jù)如圖5所示。
在柵格數(shù)據(jù)服務(wù)上,通過(guò)OpenLayers可將柵格數(shù)據(jù)以地圖的形式返回。圖6展示的是切片數(shù)據(jù)第12層拼接的地圖。
3.2 矢量空間數(shù)據(jù)
矢量空間數(shù)據(jù)的組織形式比柵格數(shù)據(jù)復(fù)雜得多,不僅有點(diǎn)(point)、線(line string)、面(polygon)、多點(diǎn)(multipoint)、多線(multi-line string)、多面(multi-polygon)等不同的矢量空間數(shù)據(jù)格式以及圖層和復(fù)雜的拓?fù)潢P(guān)系信息[5,6]。為了使用HBase方便、高效地管理矢量空間數(shù)據(jù),并且使地理位置相鄰的空間對(duì)象盡可能地在邏輯存儲(chǔ)上也相鄰,需要設(shè)計(jì)出合理的rowkey來(lái)提高檢索效率。
3.2.1 矢量空間數(shù)據(jù)的索引
無(wú)論是點(diǎn)、線、面等何種矢量空間數(shù)據(jù)格式,都是由一個(gè)個(gè)二維(經(jīng)度和緯度)的點(diǎn)組成,其中,點(diǎn)的表示為(x,y);線的表示為(x1,y1),(x2,y2),…,(xn,yn);面的表示為(x1,y1),(x2,y2),…,(x1,y1)。不同于一維數(shù)據(jù)可以通過(guò)排序方式創(chuàng)建索引,在檢索時(shí)可考慮二分查找法進(jìn)行快速查找。在對(duì)矢量空間數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí)主要考慮如何將二維數(shù)據(jù)轉(zhuǎn)換成一維數(shù)據(jù),進(jìn)而作為HBase的rowkey索引與檢索。
二維或多維空間坐標(biāo)降維至一維字符串的方法有很多,如Hilbert空間降維法[7-9],該方法能夠通過(guò)數(shù)學(xué)模型最大限度地保證空間對(duì)象之間的邏輯相關(guān)性,無(wú)較大突變;缺點(diǎn)是數(shù)學(xué)模型較復(fù)雜,降維過(guò)程中運(yùn)算量較大。四叉樹(shù)[10]也是一種有效的空間降維方法,四叉樹(shù)其實(shí)是一種字典樹(shù),因?yàn)闃?shù)節(jié)點(diǎn)的值不依賴于插入的數(shù)據(jù),在進(jìn)行數(shù)據(jù)降維時(shí)需要先建好樹(shù),再將需要降維的數(shù)據(jù)劃分到適當(dāng)?shù)膮^(qū)間即可,但算法相對(duì)復(fù)雜。本文使用Geohash①http://en.wikipedia.eohash方法降維。
圖5 切片服務(wù)
圖6 柵格數(shù)據(jù)拼接地圖
Geohash即將一個(gè)經(jīng)緯度信息轉(zhuǎn)換成一個(gè)既可以排序又可以比較的字符串編碼。具體操作步驟如下。
步驟1將緯度范圍(-90,90)平分成兩個(gè)區(qū)間(-90,0)、(0,90),如果目標(biāo)緯度位于前一個(gè)區(qū)間,則編碼為0,否則編碼為1。
步驟2若步驟1編碼為0,將緯度范圍(-90,0)平分成兩個(gè)區(qū)間(-90,-45)、(-45,0),如果目標(biāo)緯度位于前一個(gè)區(qū)間,則編碼為0,否則編碼為1。
步驟3若步驟1編碼為1,同步驟2,將緯度范圍(0,90)平均分區(qū)。
步驟4依據(jù)步驟2和步驟3對(duì)緯度進(jìn)行劃分,直到精度符合要求為止,得到緯度編碼。
步驟5經(jīng)度編碼同緯度算法,對(duì)(-180, 180)依次細(xì)分,直到精度符合要求為止,得到經(jīng)度編碼。
步驟6將經(jīng)度和緯度的編碼合并,奇數(shù)位是緯度,偶數(shù)位是精度。
步驟7對(duì)步驟6合并的編碼進(jìn)行base 32編碼。
為了使得Geohash具有可比性[11],在進(jìn)行base32編碼時(shí)需參考字符在ASCⅡ碼表的順序。用0~9、b~z(去掉a,i,l,o)32個(gè)字符進(jìn)行base32編碼,具體的碼表見(jiàn)表1。
例如,緯度為39.92324°的編碼是1011 1000 1100 0111 1001,經(jīng)度為116.390 6°的編碼為1101 0010 1100 0100 0100,經(jīng)緯度合并編碼為11100 11101 00100 01111 00000 01101 01011 00001,base32轉(zhuǎn)碼后編碼為wx4g0ec1。資料顯示base32編碼長(zhǎng)度為8時(shí),精度在19 m左右,具體的編碼長(zhǎng)度需要根據(jù)數(shù)據(jù)情況進(jìn)行選擇,為了既可以定位到某個(gè)位置,又保護(hù)隱私性,并且考慮到HBase的rowkey選擇遵循越短越好的原則,本文規(guī)定base32的長(zhǎng)度最長(zhǎng)為8。
對(duì)經(jīng)緯度進(jìn)行Geohash降維后,不僅大大縮短了rowkey的長(zhǎng)度,對(duì)大部分而言,編碼相似的距離也相近,見(jiàn)表2實(shí)際編碼實(shí)例中的前兩行。但該算法的缺點(diǎn)是有數(shù)據(jù)突變,有些Geohash值相差很遠(yuǎn),但實(shí)際位置很近,如圖7中的WX4G08和WX4FBX。解決這一問(wèn)題可使用擴(kuò)大返回結(jié)果的方式,如在查詢時(shí),除了返回與Geohash值匹配的區(qū)域,同時(shí)返回其周圍的8個(gè)區(qū)域。
針對(duì)在HBase上的多條件查詢,一般是將所有可能作為查詢條件的字段一一拼接到rowkey中,這種拼接的rowkey使得在查詢時(shí)排序越靠前的字段越有優(yōu)勢(shì)。為了提高空間查詢的效率,本文除了考慮經(jīng)緯度信息,又要考慮空間數(shù)據(jù)組織形式和圖層屬性,為了保證線和其經(jīng)過(guò)的區(qū)域以及面和其包含的區(qū)域表達(dá)出來(lái),需要在rowkey上拼接網(wǎng)格ID。本文的rowkey拼接順序?yàn)椋罕砻?;空間數(shù)據(jù)類型;經(jīng)緯度Geohash編碼;網(wǎng)格ID,如:line;L;wx51053b;102203822。列的設(shè)計(jì)即將源數(shù)據(jù)表中所有的列信息一一寫入HBase,為了加快檢索速率,添加一列圖層屬性信息。
空間數(shù)據(jù)類型可在源數(shù)據(jù)中獲取,在第3.2節(jié)介紹了空間數(shù)據(jù)組織形式有6種,為了遵循rowkey的越短越好原則②http://hbase.apache.org/0.94/ book/rowkey.design.html# keysize,將組織形式進(jìn)行了映射,見(jiàn)表2。
若將線或面上的標(biāo)記點(diǎn)及整條線或整個(gè)面的信息一一寫入HBase,當(dāng)要展示某個(gè)區(qū)域的地理信息時(shí),若一條線穿過(guò)這個(gè)區(qū)域,但線上的標(biāo)記點(diǎn)都沒(méi)落在該區(qū)域,那么這條線就不能正常地顯示出來(lái),如圖8所示。同理,若一個(gè)面的邊界在這個(gè)區(qū)域之外,面上的標(biāo)記點(diǎn)也都沒(méi)落在該區(qū)域,也會(huì)出現(xiàn)面不能正常顯示的問(wèn)題,如圖9所示。網(wǎng)格ID的設(shè)計(jì)是為了解決該類問(wèn)題。
表1 base32碼表
對(duì)于網(wǎng)格ID設(shè)計(jì)的步驟如下。
步驟1獲取數(shù)據(jù)庫(kù)對(duì)象的邊界。
步驟2對(duì)步驟1的邊界進(jìn)行四叉樹(shù)劃分,直至預(yù)先設(shè)定的地理位置精度。本文規(guī)定劃分后的每個(gè)單元格使用6位base32表示即可。
步驟3將每個(gè)單元格的經(jīng)緯度信息轉(zhuǎn)換成Google的900913類型幾何值。
步驟4在將GIS數(shù)據(jù)寫入HBase前與單元格幾何值進(jìn)行相交,得到每條記錄與網(wǎng)格相交的信息。
步驟5對(duì)于線數(shù)據(jù)表或面數(shù)據(jù)表中的每一條記錄,除了本身的信息(標(biāo)記點(diǎn)及整條線或整個(gè)面的信息)之外,相交信息也需一同寫入HBase相應(yīng)數(shù)據(jù)庫(kù)。
3.2.2 矢量空間數(shù)據(jù)的檢索
對(duì)矢量空間數(shù)據(jù)的檢索主要有以下3種。
● 返回指定區(qū)域的點(diǎn)、線、面等信息,該種情況需要遍歷rowkey的前綴為:表名;空間數(shù)據(jù)類型的各種情況,返回base32值小于或等于指定區(qū)域的所有數(shù)據(jù)。
● 返回整條線或整個(gè)面的信息,該種情況只需指定rowkey的前綴,返回整條線或整個(gè)面的邊界信息。
● 返回指定圖層的信息,該種情況若直接通過(guò)檢索rowkey的方式獲取需要遍歷的整個(gè)HBase表,為了加快該種情況的檢索速度,本文在列的設(shè)計(jì)方面增加了一項(xiàng)fliter,用來(lái)存儲(chǔ)從矢量信息中獲取的圖層信息。檢索時(shí)只需返回指定列信息即可。
表2 空間數(shù)據(jù)組織形式映射
圖7 編碼實(shí)例
圖8 線穿過(guò)區(qū)域
圖9 面包含區(qū)域
4.1 實(shí)驗(yàn)環(huán)境
本文的實(shí)驗(yàn)環(huán)境為3臺(tái)服務(wù)器搭建的集群環(huán)境。服務(wù)器的相關(guān)配置見(jiàn)表3。
表3 服務(wù)器配置
4.2 柵格數(shù)據(jù)寫HBase
本文在柵格數(shù)據(jù)切片及寫HBase上主要是略去了磁盤寫步驟,默認(rèn)的柵格數(shù)據(jù)獲取是以文件形式存儲(chǔ)在本地磁盤,再通過(guò)讀磁盤文件寫入HBase。對(duì)北京市分別切片至16層、18層,并將柵格數(shù)據(jù)寫入HBase測(cè)試結(jié)果,見(jiàn)表4。
從表4可以看出,改進(jìn)后略去磁盤寫操作,在柵格數(shù)據(jù)量較少時(shí)性能反而下降。但在處理數(shù)據(jù)規(guī)模較大(如對(duì)中國(guó)地圖或世界地圖進(jìn)行切片)時(shí),會(huì)因持續(xù)寫磁盤操作,生成文件夾及切片文件數(shù)太多導(dǎo)致inode(索引節(jié)點(diǎn))耗盡。經(jīng)過(guò)約24 h的持續(xù)切片,生成海量切片小文件,導(dǎo)致服務(wù)器inode用盡,即使硬盤空間仍有空余,也無(wú)法在硬盤上創(chuàng)建新文件,進(jìn)而切片工作無(wú)法正常完成。
若將切片直接寫入傳統(tǒng)數(shù)據(jù)庫(kù)(如MySQL、Oracle、PostgreSQL等),寫入速度不斷降低,導(dǎo)致寫入時(shí)間不可接受,后期的檢索時(shí)間也較慢。另外,海量切片小文件寫入傳統(tǒng)數(shù)據(jù)庫(kù)會(huì)對(duì)數(shù)據(jù)庫(kù)造成較高的負(fù)載,系統(tǒng)的穩(wěn)定性和擴(kuò)展性難以控制。
經(jīng)過(guò)改進(jìn)測(cè)試,對(duì)世界地圖連續(xù)切片一個(gè)月,形成83 GB的柵格數(shù)據(jù),未經(jīng)過(guò)磁盤寫操作直接寫入HBase,未出現(xiàn)任何異常情況。
本文對(duì)柵格數(shù)據(jù)的檢索也進(jìn)行了驗(yàn)證,在124217416條記錄的HBase表上檢索指定切片的響應(yīng)時(shí)間為毫秒級(jí)(0.004 s)。同時(shí),HBase也支持指定范圍檢索,一次返回萬(wàn)級(jí)別切片的響應(yīng)時(shí)間為秒級(jí)(5.077 s)。
表4 柵格數(shù)據(jù)寫HBase
4.3 矢量空間數(shù)據(jù)寫HBase
為了對(duì)海量矢量空間數(shù)據(jù)進(jìn)行高效存儲(chǔ)、管理與檢索,本文設(shè)計(jì)了矢量空間數(shù)據(jù)的rowkey,并將數(shù)據(jù)存儲(chǔ)于HBase。實(shí)驗(yàn)結(jié)果顯示,對(duì)中國(guó)地圖的矢量空間數(shù)據(jù)在24 201 991條記錄的Hbase表上檢索指定空間矢量點(diǎn)的響應(yīng)時(shí)間為毫秒級(jí)(0.021 s)。檢索線或面的響應(yīng)時(shí)間為秒級(jí),若返回一個(gè)面上的千級(jí)別的坐標(biāo)點(diǎn)時(shí)間約為3.551 s。
本文針對(duì)智慧城市建設(shè)中的數(shù)據(jù)管理問(wèn)題,利用HBase分布式數(shù)據(jù)庫(kù)的列存儲(chǔ)模型特點(diǎn),設(shè)計(jì)了一種基于HBase的GIS數(shù)據(jù)管理系統(tǒng),實(shí)現(xiàn)了對(duì)矢量空間數(shù)據(jù)與柵格數(shù)據(jù)的高效存儲(chǔ)、索引與檢索。GIS矢量空間數(shù)據(jù)在HBase中存儲(chǔ),首先確定rowkey的設(shè)計(jì),使得在檢索空間位置時(shí)返回盡可能少的數(shù)據(jù)請(qǐng)求,即在檢索時(shí)既考慮經(jīng)度與緯度,又考慮空間數(shù)據(jù)類型和圖層屬性。設(shè)計(jì)了基于表名、空間數(shù)據(jù)類型、經(jīng)緯度Geohash編碼、網(wǎng)格ID的rowkey方法。為了加快切片效率和減少存儲(chǔ)成本,本文在生成柵格數(shù)據(jù)時(shí)在mapnik切片的基礎(chǔ)上做了優(yōu)化,使柵格數(shù)據(jù)不經(jīng)過(guò)磁盤寫操作,直接寫入HBase。設(shè)計(jì)了柵格數(shù)據(jù)在HBase中存儲(chǔ)的rowkey。最后,在HBase的集群環(huán)境上對(duì)上述方法進(jìn)行了驗(yàn)證。實(shí)驗(yàn)表明,本文提出的方法具有較好的可行性和執(zhí)行效率。
[1] 潘柱延, 程學(xué)旗, 袁曉如, 等.CCF大專委2016年大數(shù)據(jù)發(fā)展趨勢(shì)預(yù)測(cè)——解讀和行動(dòng)建議[J].大數(shù)據(jù), 2016, 2(1): 105-113.PAN Z Y, CHENG X Q, YUAN X R, et al.Developing trend forecasting of big data in 2016 from CCF TFBD: interpretation and proposals [J].Big Data Research, 2016, 2(1): 105-113.
[2] CHANG F, DEAN J, GHEMAWA S, et al.Bigyable: a distributed storage system for structured data[C]//The 7th USENIX Symposium on Operating Systems Design and Implementation, November 6-8, 2006, Seattle, WA, USA.New York: ACM Press, 2006: 205-218.
[3] 陳嘉恒.Hadoop實(shí)戰(zhàn)[M].北京: 機(jī)械工業(yè)出版社, 2011: 1-2, 260-261.CHEN J H.Hadoop in action[M].Beijing: China Machine Press, 2011: 1-2, 260-261.
[4] 陳崇成, 林劍峰, 吳小竹, 等.基于NoSQL的海量空間數(shù)據(jù)云存儲(chǔ)與服務(wù)方法[J].地球信息科學(xué)學(xué)報(bào), 2013, 15(2): 166-174.CHEN C C, LIN J F, WU X Z, et al.Massive geo-spatial data cloud storage and services based on NoSQL database technique[J].Journal of Geo-Information Science, 2013, 15(2): 166-174.
[5] 范建永, 龍明, 熊偉.基于HBase的矢量空間數(shù)據(jù)分布式存儲(chǔ)研究[J].地理信息與地理信息科學(xué), 2012, 28(5): 39-42.FAN J L, LONG M, XIONG W.Research of vector spatial data distributed storage based on HBase[J].Geography and Geo-Information Science, 2012, 28(5): 39-42.
[6] 張葉, 許國(guó)艷, 花青.基于HBase的矢量空間數(shù)據(jù)存儲(chǔ)與訪問(wèn)優(yōu)化[J].計(jì)算機(jī)應(yīng)用, 2015, 35(11): 3102-3105.ZHANG Y, XU G Y, HUA Q.Storage and access optimization of vector space data based on HBase[J].Journal of Computer Applications, 2015, 35(11): 3102-3105.
[7] WANG L, CHEN B, LIU Y.Distributed storage and index of vector spatial data based on HBase[C]//The 2013 21st International Conference on Geoinformatics, June 20-22, 2013, Kaifeng, China.New Jersey: IEEE Press, 2013:1-5.
[8] 陸鋒, 周成虎.一種基于Hilbert排列編碼的GIS空間索引方法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2001, 13(5): 424-429.LU F, ZHOU C H.A GIS spatial indexing approach based on Hilbert ordering code[J].Journal of Computer-Aided Design and Computer Graphics, 2001, 13(5): 424-429.
[9] SHEKHAR S, CHAWLA S.空間數(shù)據(jù)庫(kù)[M].謝昆青, 譯.北京: 機(jī)械工業(yè)出版社, 2004: 108-113.SHEKHAR S, CHAWLA S.Spatial database[M].Translated by XIE K Q.Beijing: China Machine Press, 2004: 108-113.
[10] 滕連澤, 劉洪斌, 武偉.基于空間數(shù)據(jù)不同索引方法的比較[J].計(jì)算機(jī)與現(xiàn)代化, 2006(1): 60-62.TENG L Z, LIU H B, WU W.Comparison of indexes based on spatial data[J].Computer and Modernization, 2006(1): 60-62.
[11] HSU Y T, PAN Y C, WEI L, et al.Key formulation schemes for spatial index in cloud data managements[C]// The 2012 IEEE 13th International Conference on Mobile Data Management, July 23-26, 2012, Bengaluru, India.New Jersey: IEEE Press, 2012: 21-26.
作者簡(jiǎn)介
李雪梅(1984-),女,煙臺(tái)中科網(wǎng)絡(luò)技術(shù)研究所研發(fā)工程師,主要研究方向?yàn)閿?shù)據(jù)挖掘與分析、自然語(yǔ)言處理、大數(shù)據(jù)存儲(chǔ)管理與挖掘等。
邢俊峰(1985-),男,煙臺(tái)中科網(wǎng)絡(luò)技術(shù)研究所研發(fā)工程師,主要研究方向?yàn)閿?shù)據(jù)存儲(chǔ)檢索和展現(xiàn)等。
劉大偉(1984-),男,博士,煙臺(tái)中科網(wǎng)絡(luò)技術(shù)研究所助理研究員,主要研究方向?yàn)楹A繑?shù)據(jù)檢索、多媒體內(nèi)容分析、社交網(wǎng)絡(luò)分析等。
王海洋(1980-),男,中國(guó)科學(xué)院計(jì)算技術(shù)研究所網(wǎng)絡(luò)數(shù)據(jù)科學(xué)與技術(shù)重點(diǎn)實(shí)驗(yàn)室、煙臺(tái)中科網(wǎng)絡(luò)技術(shù)研究所工程師,主要研究方向?yàn)閿?shù)據(jù)采集、存儲(chǔ)、檢索、大數(shù)據(jù)存儲(chǔ)管理等。
劉瑋(1977-),男,中國(guó)科學(xué)院計(jì)算技術(shù)研究所網(wǎng)絡(luò)數(shù)據(jù)中心、煙臺(tái)中科網(wǎng)絡(luò)技術(shù)研究所工程師。歷任中國(guó)科學(xué)院計(jì)算技術(shù)研究所項(xiàng)目負(fù)責(zé)人,北京中科天璣信息技術(shù)有限公司總經(jīng)理助理,北京中科智源育成信息技術(shù)有限公司事業(yè)部經(jīng)理。以項(xiàng)目負(fù)責(zé)人或核心骨干成員承擔(dān)和參與了國(guó)家信息關(guān)防與網(wǎng)絡(luò)安全保障持續(xù)發(fā)展計(jì)劃、國(guó)家信息安全專項(xiàng)、國(guó)家242信息安全計(jì)劃、發(fā)展和改革委員會(huì)產(chǎn)業(yè)化項(xiàng)目等10余項(xiàng)國(guó)家重大項(xiàng)目的組織實(shí)施。
Distributed processing practice of the massive GIS data based on HBase
LI Xuemei1, XING Junfeng1, LIU Dawei1, WANG Haiyang1,2, LIU Wei1,2
1.Institute of Network Technology, ICT(YANTAI), Yantai 264003, China
2.Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100080, China
Based on the distributed database HBase, a kind of GIS data management system was designed.The system optimized the generated and stored procedures of raster data, which could be directly written into the storage and indexing of the HBase.At the same time, in view of the storing, indexing and retrieval of the vector spatial data, a new design for rowkey was proposed that considering both the latitude and longitude, and the spatial data types and attributes.So that the data needed to be returned could be quickly located by rowkey of the HBase, when retrieving vector geographic information according to the spatial location.The above methods had been verified on the HBase cluster environment with real GIS data.The results show that the proposed system has high performance for storage and retrieval of mass data, and realizes the efficient storage and real-time high-speed retrieval of the vast geographic information data.
big data, HBase, raster data, vector data, rowkey
TP301
A
10.11959/j.issn.2096-0271.2016032
2016-03-07
山東省自主創(chuàng)新及成果轉(zhuǎn)化專項(xiàng)基金資助項(xiàng)目(No.2014XGA06014);山東省科技發(fā)展計(jì)劃基金資助項(xiàng)目(No.2015GGX106001);煙臺(tái)市科技發(fā)展計(jì)劃基金資助項(xiàng)目(No.2014LGS005)
Foundation Items: Technology Innovation Program of Shandong Province of China (No.2014XGA06014), Shandong Technology Research and Development Program (No.2015GGX106001), Yantai Technology Research and Development Program (No.2014LGS005)