一、 需求背景
- 時空數(shù)據(jù)存儲的需求愈發(fā)龐大,80%的信息與空間信息有關(guān);
- 時空數(shù)據(jù)時用于整合其他各種類型數(shù)據(jù)的基礎(chǔ);
- 對完善的時空大數(shù)據(jù)存儲解決方案的需求日益迫切。
二、Geomesa簡介
-
Geomesa是一款開源的基于分布式計算系統(tǒng)的面向海量時空數(shù)據(jù)查詢與分析的工具包,可用于交通軌跡數(shù)據(jù)存儲分析等相關(guān)領(lǐng)域。 - Geomesa可以在分布式列數(shù)據(jù)庫的基礎(chǔ)上進行擴展,目前支持
Accumulo,HBase,Cassandra和Kafka等作為底層存儲。 - 提供高效的索引來讀取和查詢存儲的數(shù)據(jù),支持通過指定空間條件(距離和范圍)來快速查詢,基于kafka提供了時空數(shù)據(jù)的近實時流處理能力。
- 提供了
Spark分析能力,增加針對空間數(shù)據(jù)的UDT、UDF、UDAF,方便用戶直接使用SparkSQL進行空間數(shù)據(jù)查詢與分析。 -
Geomesa基于GeoTools API設(shè)計,與GeoServer進行集成。
三、Geomesa特性
- 能夠存儲和處理海量時空數(shù)據(jù)
- 支持實時性強、需要快速讀寫的數(shù)據(jù)
- 支持
spark分析 - 支持水平擴展(存儲介質(zhì))
- 通過
GeoServer提供地圖服務(wù),支持Common Query Language(CQL) -
GeoMesa擴展了數(shù)據(jù)的字段類型,主要支持的類型如下所示。
四、 Geomesa架構(gòu)與流程
4.1 服務(wù)架構(gòu)
GeoMesa支持多種可擴展的、基于云端的數(shù)據(jù)存儲架構(gòu),包括Apache Accumulo, Apache HBased,Google Cloud Bigtable以及用于流計算的Apache Kafka 。同時GeoMesa還可以和Apache Storm一起處理流數(shù)據(jù),并使用Spark進行空間分析。

4.2 體系架構(gòu)

藍色標(biāo)識的是用戶接口,GeoMesa提供了geomesa-web這類使用restful接口形式訪問的接口、geomesa-tools的javaAPI接口,最常用的是geomesa-tools接口。
最重要的部分是黃色標(biāo)識的索引部分,GeoMesa還進行了多種數(shù)據(jù)庫擴展功能,底層可以連接Accumulo、Cassandra、Hbase等NoSql數(shù)據(jù)庫。
4.3 Geomesa的GeoTools
為了方便用戶使用GeoMesa中存儲的數(shù)據(jù),GeoMesa通過實現(xiàn)GeoTools接口提供了使用OGC標(biāo)準(zhǔn)服務(wù)接口訪問數(shù)據(jù)的能力。
OGC標(biāo)準(zhǔn):Open Geospatial Consortium, 是一個指定與空間信息、基于位置服務(wù)相關(guān)的標(biāo)準(zhǔn)的組織。舉例:GeoMesa中用到了OGC標(biāo)準(zhǔn)中的SimpleFeatures標(biāo)準(zhǔn),該標(biāo)準(zhǔn)用來進行簡單要素對象的通用描述。
GeoMesa實現(xiàn)了OGC的Web Feature Service(要素web服務(wù))、Web Mapping Service(地圖web服務(wù))、 Web Processing Service(地理處理web服務(wù))、 Web Coverage Service標(biāo)準(zhǔn)(柵格web服務(wù))。
4.4 數(shù)據(jù)寫入流程

數(shù)據(jù)導(dǎo)入流程從左向右,可以通過
spark任務(wù)、mapreduce任務(wù)、strom流處理等不同的任務(wù)來調(diào)用GeoMesa提供的API或GeoTools API進行數(shù)據(jù)寫入,在寫入數(shù)據(jù)時GeoMesa為數(shù)據(jù)創(chuàng)建實行索引、featureID索引、空間索引、時空索引等,完成數(shù)據(jù)導(dǎo)入流程。
4.5 數(shù)據(jù)查出流程
通過GeoMesa API或GeoTools API從Accumulo中進行數(shù)據(jù)查詢,把數(shù)據(jù)讀出來。

查詢流程首先從右向左,QueryClient發(fā)起查詢請求,GeoMesa根據(jù)查詢請求選擇可用的最優(yōu)索引從底層拉取數(shù)據(jù),通過API將結(jié)果返回。
五、 Geomesa優(yōu)缺點
優(yōu)點:
(1)支持Spark大數(shù)據(jù)分析。
提供了用于空間數(shù)據(jù)分析的SpatialRDD模型;
提供了多種時空函數(shù)實現(xiàn),如buffer、contains等;
擴展Spark SQL以支持標(biāo)準(zhǔn)的時空查詢

舉例SparkSQL進行空間查詢:

(2)多種空間索引,最大化優(yōu)化查詢
(3)提供基于
Coprocessor的空間查詢方式,將計算放在Server端,減少數(shù)據(jù)通訊開銷,性能較好。
缺點:
(1)時空索引構(gòu)建采用Z-ordering會存在距離突變情況。
(2)目前不支持柵格數(shù)據(jù)存儲
六、 hbase ganos
6.1 Ganos簡介
Hbase Ganos時空引擎是基于LocationTech 開源項目 GeoMesa 開發(fā)的一套時空大數(shù)據(jù)引擎系統(tǒng)。HBase Ganos提供一系列時空索引(點、線、面)、數(shù)據(jù)類型、查詢算法,基于阿里云NoSQL分布式存儲系統(tǒng)中對空間/時空數(shù)據(jù)進行高效的存儲、索引、查詢和分析計算。
6.2 Ganos使用場景
基礎(chǔ)地理信息數(shù)據(jù)管理:
HBase Ganos提供的高效時空索引系統(tǒng),允許用戶使用NoSQL數(shù)據(jù)庫對點、線、面等空間要素進行分布式存儲與快速查詢。
大規(guī)模傳感網(wǎng)實時數(shù)據(jù)管理:
HBase Ganos可以Stream流式計算框架、MQ、Spark分析框架等進行無縫銜接,用來存儲和管理實時的流式數(shù)據(jù)并進行實時分析。
大規(guī)模軌跡數(shù)據(jù)管理:
HBase Ganos提供了針對隨時間連續(xù)變化的軌跡數(shù)據(jù)的存儲模型,并提供了TubeSelect等空間查詢算法實現(xiàn)基于軌跡數(shù)據(jù)的時空查詢算法??蓮V泛應(yīng)用在網(wǎng)約車、共享單車、船只、飛行器等領(lǐng)域的軌跡存儲與查詢。
海量數(shù)據(jù)統(tǒng)計分析:
HBase Ganos提供了多種如KNN、直方圖、熱點分析等空間分析算法,允許用戶進行空間大數(shù)據(jù)的實時分析挖掘。
6.3 Ganos優(yōu)勢
(1)PB級存儲與海量并發(fā)寫入。
(2)多種空間索引方式供用戶靈活選擇。
(3)基于Coprocessor的空間查詢與計算方式,將計算過程放置在server端,能夠最大化并行效率,從而獲得較好的性能提升。
(4)提供了多種空間數(shù)據(jù)分析算法,如KNN、直方圖、熱點分析、TubeSelect等。
(5)基于OGC標(biāo)準(zhǔn)設(shè)計,便于系統(tǒng)間的集成與互操作。
(6)冷熱數(shù)據(jù)存儲分離與無縫訪問。
(7)基于阿里云HBase專業(yè)運維,全托管方式,提供可靠穩(wěn)定的服務(wù)。
相比GeoMesa,Ganos并沒有進行二次開發(fā),只是進行了封裝。