TOP

GeoMesa-HBase部署實踐
2019-02-12 01:46:28 】 瀏覽:1367
Tags:

關于HBase實驗環境的搭建請參閱我的另一篇文章:


1. GeoMesa源代碼編譯

由于考慮到日后需要基于GeoMesa進行二次開發,所以本文采用的是編譯GeoMesa源代碼的方式,如果讀者僅僅為了學習應用GeoMesa進行空間數據管理优乐棋牌app下载,可以直接從官方下載已經編譯好的GeoMesa HBase工具包,最新版本為2.0:

下載最新版本(VERSION為你想使用的版本):

 git checkout tags/geomesa-$VERSION -b geomesa-$VERSION

定位到根目錄,使用maven進行編譯:

 mvn clean install -DskipTests

在編譯過程中經常會出錯或者無響應的情況,多重復幾次就能成功。

編譯成功后,GeoMesa for HBase的完整安裝包位于geomesa-hbase\geomesa-hbase-dist\target目錄下


2. 部署GeoMesa for HBase

默認情況下,GeoMesa啟動過程中會讀取所有HBase與Hadoop相關的環境變量來構建自己的CLASSPATH, 有GeoMesa相關的所有配置都可以在geomesa-hbase_2.11-$VERSION/conf/geomesa-env.sh中進行,或者你也可以在系統用戶根目錄下的.bashrc文件中進行配置,詳細的配置信息讀者可參閱官方文檔:

這里我們采用配置.bashrc文件的方式:

注意:官方文檔中這一部分有個小錯誤,就是將GEOMESA_HBASE_HOME寫成了GEOMESA_HOME!!!


然后進入到${GEOMESA_HBASE_HOME},運行:

$ bin/install-jai.sh
$ bin/install-jline.sh

GeoMesa使用HBase的自定義過濾器來執行CQL查詢,為了允許GeoMesa使用過濾器,需要將${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime_2.11-2.0.0.jar拷貝到${HBase_HOME}/lib目錄下。

注冊Coprocessors:

Geomesa使用HBase提供的coprocessor工具將處理過程移動到服務器端運行來提高查詢效率,最簡單的注冊方式就是直接修改hbase-site.xml,增加以下內容:

  <property>
    <name>hbase.coprocessor.user.region.classes</name>
    <value>org.locationtech.geomesa.hbase.coprocessor.GeoMesaCoprocessor</value>
  </property>
最后運行bin/geomesa-hbase configure初始化Geomesa

3. 測試

測試代碼使用官方提供的示例程序:

$git clone

下載完成后進行編譯:

$cd geomesa-tutorials
$ mvn clean install -pl geomesa-quickstart-hbase
編譯成功后運行:
$ java -cp geomesa-tutorials-hbase-quickstart-2.1.0-SNAPSHOT.jar org.geomesa.example.hbase.HBaseQuickStart 
    --hbase.zookeepers master 
    --hbase.catalog geomesa_hbase

如果看到下面的輸出證明運行成功:

這里有必要提一下GeoMesa的內置時空索引方法,通過查閱官方文檔优乐棋牌app下载,可以看到GeoMesa提供了兩類四種索引方法:

空間索引(Spatial Index, Z2/XZ2)

If the SimpleFeatureType has a Geometry-type attribute (Point, LineString, Polygon, etc), GeoMesa will create a spatial index on that attribute. If there is more than one Geometry-type attribute, the default one will be used. The default geometry is generally specified with a * prefix in the SimpleFeatureType string, and is the one returned by SimpleFeatureType.getGeometryDescriptor.

時空索引(Spatio-temporal Index, Z3/XZ3)

If the SimpleFeatureType has both a Geometry-type attribute and a Date attribute, GeoMesa will create a spatio-temporal index on those attributes. The Geometry-type attribute used is the same as for the spatial index, above. The Date attribute selected will be the first one declared, or can be set explicitly. See Setting the Indexed Date Attribute for details on setting the indexed date.

可見Z2/XZ2與Z3/XZ3最大區別在于在于是否將時間屬性包含在索引中。

在HBase Shell中輸入list查看運行結果,可以看到geomesa新建了5個表格,這里Z2/Z3指示了Geomesa的索引方式。

接著我們使用全日本地區的OSM數據集的建筑物圖層(gis.osm_buildings_a_free_1)進行測試 (使用root用戶

使用 geomesa-hbase ingest 命令導入shp數據:

geomesa-hbase ingest --catalog gis_osm_buildings_a_free_1 
	--feature-name gis_osm_buildings_a_free_1 
	--input-format shp 
	"/home/xiaofei/Downloads/Japan/gis.osm_buildings_a_free_1.shp"

運行結果如下,我們發現4,906,174條記錄被插入到數據庫中,耗時5分鐘44秒,可見Geomesa數據導入功能的效率還是比較優秀的。


接著我們還是在HBase Shell中查看Schema,注意由于gis.osm_buildings_a_free_1沒有時間屬性,所以系統默認的構建xz2索引,也就是只使用經緯度構建GeoHash索引:


4. 整合GeoServer

將$GEOMESA_HBASE_HOME/dist/gs-plugins/geomesa-hbase-gs-plugin_2.11-$VERSION-install.tar.gz解壓到WBE-INF/lib路徑下;

由于geomesa-hbase-gs-plugin并不包含有Hadoop、HBase有關的依賴jar文件优乐棋牌app下载,所以需要手動將下圖中的jar文件復制到WBE-INF/lib路徑下;

啟動Tomcat,然后訪問http://master:8080/geoserver

在Stores頁面中可以發現新增了HBase(Geomesa)數據源


將前面我面新導入的gis.osm_buildings_a_free_1(Catalog名稱)發布為新圖層:


然后就可以通過OpenLayers查看圖層了:


上述就是GeoMesa for HBase的整個部署流程,在部署過程中會遇到各種各樣的問題,希望讀者朋友保持耐心,多參考網上相關資源,尤其是GeoMesa官方參考手冊,一定可以成功搭建GeoMesa的開發環境。后面我會詳細介紹GeoMesa的整體架構以及空間索引方法,也希望有興趣的朋友可以多提意見,一起學習。


請關注公眾號獲取更多資料



】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇Hbase連接異常,JAR包沖突解決攻略 下一篇hbase 修改表名 Java api(shell)