一、 安裝
官網(wǎng)說明GeoMesa需要Hbase1.3版本或1.4版本,安裝GeoMesa前首先安裝Hbase1.3以上版本。

1.1 Hbase安裝
由于我之前裝過Hbase1.2,所以在Hbase1.2版本的基礎(chǔ)上升級Hbase版本至1.4.9。
我是將Hbase1.4.9 和Geomesa安裝在/opt/目錄下。
1.1.1 下載解壓新版本安裝包
下載HBase1.4.9版本安裝包hbase-1.4.9-bin.tar.gz解壓到指定/opt/目錄下
tar zxvf geomesa-hbase_2.11-2.1.0.tar.gz -C /opt/
1.1.2 配置環(huán)境變量:
將環(huán)境變量HADOOP_HOME、HBASE_HOME配置在~/.bash_profile文件中:
export HADOOP_HOME=/usr/lib/hadoop
export HBASE_HOME=/opt/hbase-1.4.9
export HBASE_CLASSPATH=/etc/hadoop
export PATH=$HADOOP_HOME/bin:$HBASE_HOME/bin:$PATH
加載環(huán)境變量:
source ~/.bash_profile
1.1.3 HBase環(huán)境配置
為簡化HBase配置直接拷貝原HBase1.2.0的配置文件并進(jìn)行修改,拷貝/etc/hadoop目錄下6個配置文件覆蓋到HBase1.4.9的/opt/hbase-1.4.9/conf目錄,并創(chuàng)建/opt/hbase-1.4.9/logs目錄存儲日志:
core-site.xml
hbase-env.sh
hbase-site.xml
hdfs-site.xml
masters
regionservers
只需要修改hbase-env.sh文件中三項(xiàng)標(biāo)星號的部分(注意文件中不要寫上星號)。
hbase-env.sh:
export JAVA_HOME=/usr/lib/jdk1.8
export HBASE_LOG_DIR=/opt/hbase-1.4.9/logs
export HBASE_PID_DIR=/opt/hbase-1.4.9
export HBASE_MANAGES_ZK=false
* export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC"
* export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
* export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
export HADOOP_HOME=/usr/lib/hadoop
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HADOOP_HOME}/lib/native/
1.1.4 運(yùn)行HBase1.4.9
- 卸載
HBase1.2.0,檢查并kill 掉HMaster和HRegionServer服務(wù) - 刪除
zookeeper中原HBase緩存文件(刪除zk上hbase節(jié)點(diǎn))
$ cd /usr/lib/zookeeper/bin
$ ./zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[zk: localhost:2181(CONNECTED) 1] rmr /hbase
[zk: localhost:2181(CONNECTED) 1] quit
-
重啟zookeeper服務(wù)
./zkServer.sh restart 啟動
HBase1.4.9
cd /opt/hbase-1.4.9/bin
./start-hbase.sh
1.2 GeoMesa安裝
1.2.1 下載GeoMesa-Hbase的二進(jìn)制版本安裝包
geomesa-hbase_2.11-2.1.0-bin.tar.gz
1.2.2 解壓到/opt/路徑下
tar xvf geomesa-hbase-dist_2.11-2.1.0-bin.tar.gz –C /opt/
1.2.3 配置環(huán)境變量
在/etc/profile文件中增加以下配置
export HADOOP_HOME=/path/to/hadoop
export HBASE_HOME=/path/to/hbase
export GEOMESA_HBASE_HOME=/path/to/geomesa
export PATH=$HADOOP_HOME/bin:$HBASE_HOME/bin:$GEOMESA_HBASE_HOME/bin:$PATH
1.2.4 為geomesa安裝依賴
在geomesa主目錄下運(yùn)行以下四個命令
$ bin/install-jai.sh
$ bin/install-jline.sh
$ bin/install-hadoop.sh
$ bin/install-hbase.sh
如果安裝失敗可以根據(jù)提示中的地址自己去下載下面jar包,并將其放到geomesa主目錄的lib目錄下,主要包括下列jar包依賴。

1.2.5 為geomesa-hbase配置協(xié)處理器
(1) 創(chuàng)建hdfs目錄
hdfs dfs –mkdir /hbase/lib
(2) 將{geomesa_hbase_home}/dist/hbase/目錄下的geomesa-hbase-distributed-runtime_2.11-2.1.0.jar拷貝到hdfs上的hbase/lib目錄下
hadoop fs -put geomesa-hbase-distributed-runtime_2.11-2.1.0.jar /hbase/lib
(3) 同時將該jar包放到hbase安裝目錄下的/lib/下
scp geomesa-hbase-distributed-runtime_2.11-2.1.0.jar /opt/hbase/lib
(4) 在Hbase-site.xml注冊協(xié)處理器
增加下面property配置項(xiàng):
<configuration>
<property>
<name>hbase.coprocessor.user.region.classes</name>
<value>org.locationtech.geomesa.hbase.coprocessor.GeoMesaCoprocessor</value>
</property>
</configuration>
(5) 初始化Geomesa
在geomesa主目錄下的/bin/下,執(zhí)行以下命令:
[root@node69191 bin]# ./geomesa-hbase configure
1.3 重啟Hbase
安裝配置完成后,重啟hbase。
測試Geomesa安裝是否成功
[root@node69191 logs]# geomesa-hbase version
GeoMesa tools version: 2.0.2
Commit ID: 4e59c0952f46824ef31cbbc9b5152e44c70c1c8f
Branch: 4e59c0952f46824ef31cbbc9b5152e44c70c1c8f
Build date: 2018-06-11T19:14:09+0000
[root@node69191 logs]#
Bingo 完成。
二、 Geomesa協(xié)處理器
GeoMesa利用服務(wù)器端處理來加速某些查詢,為了利用這些功能,GeoMesa協(xié)處理器必須在所有GeoMesa表上注冊,且geomesa-hbase-distributed-runtime代碼必須在hdfs路徑上可用。
Hbase協(xié)處理器可理解為服務(wù)端的攔截器,能夠?qū)⑻幚磉^程移動到服務(wù)器端運(yùn)行來提高查詢效率,即實(shí)現(xiàn)謂詞下推。例如數(shù)據(jù)的過濾處理流程直接放到服務(wù)器端執(zhí)行,就只需要返回一個小的處理后的結(jié)果集。
協(xié)處理器框架提供了Observer和EndPoint兩種模塊,通過繼承這些類來擴(kuò)展自己的功能。Observer這類協(xié)處理器與觸發(fā)器類似,定義了一些鉤子函數(shù)在一些特定時間發(fā)生時被執(zhí)行,Observer提供了一些設(shè)計好的鉤子函數(shù),可以在集群服務(wù)器端被調(diào)用。EndPoint模式的協(xié)處理器能夠自定義一些操作并添加到服務(wù)端,用戶代碼可以被部署到管理數(shù)據(jù)的服務(wù)器端,在服務(wù)器端進(jìn)行數(shù)據(jù)的處理執(zhí)行,endpoint通過添加一些RPC調(diào)用來動態(tài)擴(kuò)展RPC協(xié)議。
2.1 協(xié)處理器實(shí)現(xiàn)
Geomesa使用了EndPoint模式來實(shí)現(xiàn)特定的功能,EndPoint協(xié)處理器需要與服務(wù)端直接通信。服務(wù)端是對于Protobuf Service的實(shí)現(xiàn),客戶端和服務(wù)端都需要進(jìn)行基于接口的代碼邏輯實(shí)現(xiàn)。
EndPoint類比于數(shù)據(jù)庫的存儲過程,觸發(fā)服務(wù)端基于Region的同步運(yùn)行,類似map操作,然后將各個Region Server的結(jié)果在客戶端收集后歸并計算,類似reduce操作。
實(shí)現(xiàn)EndPoint分三步走:
- 1.
Protobuf編寫和定義RPC
客戶端與服務(wù)端存在RPC通信,需要確定RPC接口,Hbase協(xié)處理器是通過protobuf協(xié)議實(shí)現(xiàn)數(shù)據(jù)交換,故通過probuf定義接口。
Geomesa中的probuf協(xié)議類為GeoMesaProto,該類中定義的接口即Geomesa希望通過協(xié)處理器實(shí)現(xiàn)的功能。
- 2.服務(wù)端代碼實(shí)現(xiàn)
本質(zhì)上來說,實(shí)現(xiàn)協(xié)處理器的框架,就是實(shí)現(xiàn)兩點(diǎn):
(1)繼承Hbase協(xié)處理器提供的EndPoint抽象類或者接口
(2)基于框架代碼填充業(yè)務(wù)邏輯
GeoMesa的協(xié)處理主類為GeoMesaCoprocessor
class GeoMesaCoprocessor extends GeoMesaCoprocessorService with Coprocessor with CoprocessorService
我們可以看到它實(shí)現(xiàn)兩個接口
Coprocessor 和 CoprocessorService,Coprocessor如上文提到,是Hbase協(xié)處理器基礎(chǔ)類,CoprocessorService即為擴(kuò)展的RPC協(xié)議接口。
需要說明的是EndPoint協(xié)處理器是針對單個Region處理的,每一個計算結(jié)果都是對于單個Region的數(shù)據(jù)范圍的計算結(jié)果,開發(fā)時需要注意邏輯。
- 3.部署
Endpoint協(xié)處理器
將定義的GeoMesaCoprocessor協(xié)處理器打成jar包部署到Hbase。具體部署過程見 1.2.5 為geomesa-hbase配置協(xié)處理器
2.2 驗(yàn)證協(xié)處理器是否加載成功
2.2.1 在官網(wǎng)下載hbase-tutorials源碼進(jìn)行測試。
2.2.3 進(jìn)入源碼的org.geomesa.example.hbase.HBaseQuickStart類中,為主函數(shù)傳入?yún)?shù):
--hbase.zookeepers 1.1.1.1
--hbase.catalog wcy_geomesa
其中1.1.1.1時指zk安裝的ip地址
具體操作如下圖:

配好之后,運(yùn)行HBaseQuickStart的main函數(shù),查看輸出結(jié)果。如果結(jié)果跟下面結(jié)果一直,則協(xié)處理器加載成功。
Loading datastore
Creating schema: GLOBALEVENTID:String,Actor1Name:String,Actor1CountryCode:String,Actor2Name:String,Actor2CountryCode:String,EventCode:String,NumMentions:Integer,NumSources:Integer,NumArticles:Integer,ActionGeo_Type:Integer,ActionGeo_FullName:String,ActionGeo_CountryCode:String,dtg:Date,geom:Point:srid=4326
Generating test data
Writing test data
Wrote 2356 features
Running query BBOX(geom, -120.0,30.0,-75.0,55.0) AND dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00
01 719025288=719025288|CANADA|CAN|||190|4|1|4|4|Penticton, British Columbia, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-119.583 49.5)
02 719025945=719025945|DEPARTMENT OF EDUCATION||OBAMA|USA|090|20|2|20|2|North Dakota, United States|US|2018-01-01T00:00:00.000Z|POINT (-99.793 47.5362)
03 719025853=719025853|PRESIDENT||MEXICO|MEX|0874|3|3|3|2|Minnesota, United States|US|2018-01-01T00:00:00.000Z|POINT (-93.9196 45.7326)
04 719025856=719025856|PRESIDENT||MEXICO|MEX|131|3|3|3|2|Minnesota, United States|US|2018-01-01T00:00:00.000Z|POINT (-93.9196 45.7326)
05 719026960=719026960|UNITED STATES|USA|||071|6|1|6|2|Minnesota, United States|US|2018-01-01T00:00:00.000Z|POINT (-93.9196 45.7326)
06 719024925=719024925|||CORPORATION||172|2|1|2|4|Saskatoon, Saskatchewan, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-106.667 52.1333)
07 719025289=719025289|CANADA|CAN|CORPORATION||115|6|1|6|4|Saskatoon, Saskatchewan, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-106.667 52.1333)
08 719025290=719025290|CANADA|CAN|CORPORATION||172|8|1|8|4|Saskatoon, Saskatchewan, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-106.667 52.1333)
09 719025276=719025276|SASKATCHEWAN|CAN|||020|20|1|10|4|Saskatchewan, Manitoba, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-97.7167 52.15)
10 719025946=719025946|PREMIER||||015|6|1|6|4|Saskatchewan, Manitoba, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-97.7167 52.15)
Returned 669 total features
Running query BBOX(geom, -120.0,30.0,-75.0,55.0) AND dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00
Returning attributes [GLOBALEVENTID, dtg, geom]
01 719025281=719025281|2018-01-01T00:00:00.000Z|POINT (-119.583 49.5)
02 719024929=719024929|2018-01-01T00:00:00.000Z|POINT (-119.35 50.3667)
03 719025855=719025855|2018-01-01T00:00:00.000Z|POINT (-93.9196 45.7326)
04 719026967=719026967|2018-01-01T00:00:00.000Z|POINT (-93.9196 45.7326)
05 719027201=719027201|2018-01-01T00:00:00.000Z|POINT (-93.9196 45.7326)
06 719025275=719025275|2018-01-01T00:00:00.000Z|POINT (-106.667 52.1333)
07 719027017=719027017|2018-01-01T00:00:00.000Z|POINT (-117.157 32.7153)
08 719027116=719027116|2018-01-01T00:00:00.000Z|POINT (-117.157 32.7153)
09 719025124=719025124|2018-01-01T00:00:00.000Z|POINT (-117.393 33.2103)
10 719026572=719026572|2018-01-01T00:00:00.000Z|POINT (-117.823 33.6695)
Returned 669 total features
Running query EventCode = '051'
01 719025248=719025248|BUSINESS||||051|10|1|10|1|Australia|AS|2018-01-01T00:00:00.000Z|POINT (135 -25)
02 719026319=719026319|SENATOR||UNITED STATES|USA|051|2|1|2|2|Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
03 719027258=719027258|UNITED STATES|USA|||051|2|1|2|2|Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
04 719026945=719026945|CALIFORNIA|USA|||051|8|1|8|2|California, United States|US|2018-01-01T00:00:00.000Z|POINT (-119.746 36.17)
05 719027115=719027115|LOS ANGELES|USA|KING||051|10|1|10|3|Sacramento, California, United States|US|2018-01-01T00:00:00.000Z|POINT (-121.494 38.5816)
06 719025112=719025112|||UNITED STATES|USA|051|48|12|48|3|Wichita, Kansas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.3375 37.6922)
07 719025110=719025110|||UNITED STATES|USA|051|6|1|6|3|Edgefield, South Carolina, United States|US|2018-01-01T00:00:00.000Z|POINT (-81.9296 33.7896)
08 719026297=719026297|SENATOR||||051|6|1|6|3|Washington, District of Columbia, United States|US|2018-01-01T00:00:00.000Z|POINT (-77.0364 38.8951)
09 719026943=719026943|AMERICAN|USA|||051|14|1|8|3|Chicago, Illinois, United States|US|2018-01-01T00:00:00.000Z|POINT (-87.6501 41.85)
10 719026364=719026364|MEXICO|MEX|||051|2|1|2|2|Pennsylvania, United States|US|2018-01-01T00:00:00.000Z|POINT (-77.264 40.5773)
Returned 138 total features
Running query EventCode = '051' AND dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00
Returning attributes [GLOBALEVENTID, dtg, geom]
01 719025739=719025739|2018-01-01T00:00:00.000Z|POINT (5 8.5)
02 719025867=719025867|2018-01-01T00:00:00.000Z|POINT (7.53333 9.08333)
03 719025606=719025606|2018-01-01T00:00:00.000Z|POINT (12.847 10.8658)
04 719026504=719026504|2018-01-01T00:00:00.000Z|POINT (12.847 10.8658)
05 719026508=719026508|2018-01-01T00:00:00.000Z|POINT (14.2377 11.7066)
06 719026066=719026066|2018-01-01T00:00:00.000Z|POINT (35.1 31.5333)
07 719025842=719025842|2018-01-01T00:00:00.000Z|POINT (35.2333 31.7667)
08 719025359=719025359|2018-01-01T00:00:00.000Z|POINT (12.4833 41.9)
09 719025360=719025360|2018-01-01T00:00:00.000Z|POINT (12.4833 41.9)
10 719025249=719025249|2018-01-01T00:00:00.000Z|POINT (12.833333 42.833333)
Returned 138 total features
Done
Process finished with exit code 0
如果returned結(jié)果中存在為0的,則協(xié)處理器加載失敗。