本次安装基于HDP,已默认已安装好HDFS、HBase2.0.1。
1、下载安装包,解压(后期可下载源码编译开发)
wget https://github.com/locationtech/geomesa/releases/download/geomesa-3.2.0/geomesa-hbase_2.11-3.2.0-bin.tar.gz
tar -zxvf geomesa-hbase_2.11-3.2.0-bin.tar.gz
2、修改配置,启动GeoMesa
2.1 停止hbase
安装GeoMesa过程中,需要修改HBase部分配置(以下为HBase停止和启动命令)
sudo -u hbase /usr/hdp/3.0.1.0-187/hbase-2.0.1/bin/hbase-daemon.sh stop master
sudo -u hbase /usr/hdp/3.0.1.0-187/hbase-2.0.1/bin/hbase-daemon.sh stop regionserver
sudo -u hbase /usr/hdp/3.0.1.0-187/hbase-2.0.1/bin/hbase-daemon.sh start master
sudo -u hbase /usr/hdp/3.0.1.0-187/hbase-2.0.1/bin/hbase-daemon.sh start regionserver
2.2 GeoMesa配置
1、编辑/etc/profile文件,声明GEOMESA_HBASE_HOME、HADOOP_HOME、HBASE_HOME
export HADOOP_HOME=/usr/hdp/3.0.1.0-187/hadoop
export HBASE_HOME=/usr/hdp/3.0.1.0-187/hbase-2.0.1
export GEOMESA_HBASE_HOME=/usr/hdp/3.0.1.0-187/geomesa
export CLASSPATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$HADOOP_HOME:$HBASE_HOME:$GEOMESA_HBASE_HOME:$PATH
编辑完成后,source /etc/profile,使之生效。
2、GeoMesa使用HBase的自定义过滤器来执行CQL查询,为了允许GeoMesa使用过滤器,需要将geomesa-hbase-distributed-runtime_2.11-2.0.0.jar拷贝到${HBase_HOME}/lib目录下
cp dist/hbase/geomesa-hbase-distributed-runtime-hbase2_2.11-3.2.0.jar /usr/hdp/3.0.1.0-187/hbase-2.0.1/lib/
3、Geomesa使用HBase提供的coprocessor工具将处理过程移动到服务器端运行来提高查询效率,为了不手动对每个表添加协处理器,这里直接在配置文件hbase-site.xml中添加。
<configuration>
<property>
<name>hbase.coprocessor.user.region.classes</name>
<value>org.locationtech.geomesa.hbase.server.coprocessor.GeoMesaCoprocessor</value>
</property>
</configuration>
4、启动HBase服务。GeoMesa是一个命令行工具,没有对应服务。至此,GeoMesa已配置完成。
3、测试
1、下载、编译GeoMesa提供的工具包,测试功能是否正常可用。
git clone https://github.com/geomesa/geomesa-tutorials.git
mvn clean install -pl geomesa-tutorials-hbase/geomesa-tutorials-hbase-quickstart -am
2、执行
java -cp geomesa-tutorials-hbase-quickstart-4.0.0-SNAPSHOT.jar \ org.geomesa.example.hbase.HBaseQuickStart --hbase.zookeepers manager --hbase.catalog \ geomesa_hbase
命令行查询:
bin/geomesa-hbase export -c geomesa_hbase -f gdelt-quickstart -q "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"
bin/geomesa-hbase export -c geomesa_hbase -f gdelt-quickstart -q "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" -a GLOBALEVENTID,dtg,geom -m 10 -o output.csv
bin/geomesa-hbase export -c geomesa_hbase -f gdelt-quickstart -q "EventCode='051'"
bin/geomesa-hbase export -c geomesa_hbase -f gdelt-quickstart -q "EventCode='051' and dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00 "
bin/geomesa-hbase export -c geomesa_hbase -f gdelt-quickstart -q "EventCode='051' and WITHIN(geom, POLYGON((-6.4101 55.597244,-6.4101 50.947156,0.656067 50.947156,0.656067 55.597244,-6.4101 55.597244))) "
测试效果如图,则GeoMesa安装成功。
HBase中默认创建了5张表,每个表大小基本一致(这里可以看出,GeoMesa存储时,数据会存储多份,产生数据冗余)
导入大量数据,再查看表大小,这时数据冗余比较明显,只能配合HBase表压缩缓解该问题,或者建表时,只建需要的索引类型: