1. 前期准备
在安装GeoMesa-Hbase之前,要保证服务器上已经正确安装JDK、Hadoop、Hbase等组件,具体版本要求如下:
- Java JDK 1.8
- Apache Maven 3.5.2 或更新版本
- Github客户端
- Hadoop 2.7.x(建议)
- Hbase 1.3.x 或者1.4.x
2. 下载和解压
下载方式有两种,可以直接从Github上面下载已经编译好的二进制文件,也可以下载后利用maven进行编译
2.1 下载后直接解压
从Github下载已经编译好的二进制文件,解压至目标目录($VERSION是你想要下载的版本,我测试成功的是2.1.0)。需要指出的是,geomesa往往有两个版本号,前面的2.11其实是它支持的scala的版本号,后面的才是它本身的版本号。
- # download and unpackage the most recent distribution:
- wget "https://github.com/locationtech/geomesa/releases/download/geomesa_2.11-$VERSION/geomesa-hbase-dist_2.11-$VERSION-bin.tar.gz"
- tar -xvf geomesa-hbase-dist_2.11-$VERSION-bin.tar.gz
- cd geomesa-hbase-dist_2.11-$VERSION
- ls
- bin/ conf/ dist/ docs/ examples/ lib/ LICENSE.txt logs/
2.2 下载后源码编译
由于考虑到日后需要基于GeoMesa进行二次开发,也可以采用编译GeoMesa源代码的方式。
下载geomesa源码(VERSION是你想要的版本)
git clone https://github.com/locationtech/geomesa.git
进入geomesa的根目录然后进行编译
mvn clean install -DskipTests=true
编译成功后,GeoMesa HBase的完整安装包位于geomesa-hbase\geomesa-hbase-dist\target目录下解压
sudo tar -xvf geomesa-hbase_2.11-$VERSION-SNAPSHOT-bin.tar.gz /home/software
修改权限
sudo chown -R xxx:hadoop /usr/local/geomesa-hbase_2.11-$VERSION-SNAPSHOT
拷贝到其他机器上
sudo scp -r /usr/local/geomesa-hbase_2.11-$VERSION-SNAPSHOT root@192.168.100.92:/usr/local/
3. 修改配置信息
为了程序的正常运行和操作方便,建议配置Hadoop、Hbase、GeoMesa-Hbase的环境变量。下述三种方式都可以。
3.1 在/etc/profile文件中配置(主要是为了操作方便)
将下列环境变量添加在profile文件当中。
- export HADOOP_HOME=/path/to/hadoop
- export HBASE_HOME=/path/to/hbase
- export GEOMESA_HBASE_HOME=/opt/geomesa
- export PATH="${PATH}:${GEOMESA_HBASE_HOME}/bin"
五星重点:在此配置GeoMesa的环境变量一定要用GEOMESA_HBASE_HOME,在官方文档中记载需要用“GEOMESA_HOME”,但是这个是错的,应该是“GEOMESA_HBASE_HOME”。
应用配置文件。
source /etc/profile
由于许可的原因,需要在geomesa根目录下手动执行以下两个命令,安装两个插件。
- bin/install-jai.sh
- bin/install-jline.sh
3.2 在GeoMesa本身的环境变量中设置
GeoMesa 推荐在geomesa-hbase_2.11-$VERSION/conf/geomesa-env.sh文件中设置以上环境变量 。
- export HADOOP_HOME=/path/to/hadoop
- export HBASE_HOME=/path/to/hbase
- export GEOMESA_HBASE_HOME=/opt/geomesa
- export PATH="${PATH}:${GEOMESA_HBASE_HOME}/bin"
3.3 在外部环境中配置环境变量
修改.bashrc
sudo vim .bashrc
添加环境变量
- export HADOOP_HOME=/path/to/hadoop
- export HBASE_HOME=/path/to/hbase
- export GEOMESA_HBASE_HOME=/opt/geomesa
- export PATH="${PATH}:${GEOMESA_HBASE_HOME}/bin"
由于许可的原因,需要在geomesa根目录下手动执行以下两个命令,安装两个插件。
- bin/install-jai.sh
- bin/install-jline.sh
4. 部署GeoMesa-HBase分布式运行jar
GeoMesa for HBase需要使用本地过滤器来加速查询,因此需要将GeoMesa的runtime JAR包,拷贝到HBase的库目录下。
官网给的默认设置是拷贝至HDFS中,其中${hbase.dynamic.jars.dir}是${hbase.rootdir}/lib
hadoop fs -put ${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime-$VERSION.jar ${hbase.dynamic.jars.dir}/
注意:如果是分布式环境,需要将其复制到每一个节点。
GeoMesa使用HBase自定义过滤器来改进CQL查询的处理。要使用自定义筛选器,必须将分布式运行时jar部署到HBase,并将其部署到由调用的HBase配置变量指定的目录中 将/dist/hbase/geomesa-hbase-distributed-runtime_2.11-2.1.0-SNAPSHOT.jar拷贝到${HBase_HOME}/lib目录下。
cp /home/software/geomesa-hbase_2.11-$VERSION-SNAPSHOT/dist/hbase/geomesa-hbase-distributed-runtime_2.11-$VERSION-SNAPSHOT.jar /home/software/hbase-1.3.3/lib/
注意:此处还需要把geomesa-hbase-distributed-runtime_2.11-2.1.0-SNAPSHOT.jar 拷贝到/tmp/hbase-${usr}/hbase/lib/下(这个目录可能不存在,我是通过自己创建目录解决的),并且每个机器都要这样做,运行时会找这个jar包的。这个地方在其它资料里都没提到,但很重要。
cp /home/software/geomesa-hbase_2.11-$VERSION-SNAPSHOT/dist/hbase/geomesa-hbase-distributed-runtime_2.11-$VERSION-SNAPSHOT.jar /tmp/hbase-root/hbase/lib/
5. 注册协处理器
GeoMesa利用服务器端处理来加速某些查询。为了利用这些功能,GeoMesa协处理器必须在所有GeoMesa表上注册或在站点范围内注册,并且geomesa-hbase-distributed-runtime代码必须在类路径或HDFS URL上可用,具体取决于所使用的注册方法。
为了使HBase在运行时能够访问到geomesa-hbase-distributed-runtime的jar包。官网给出了几种方法实现这一目标,最方便的是在HBase的配置文件hbase-site.xml添加如下内容:
- <property>
- <name>hbase.coprocessor.user.region.classes</name>
- <value>org.locationtech.geomesa.hbase.coprocessor.GeoMesaCoprocessor</value>
- </property>
注意:如果是分布式环境,需要在每一个节点都添加相同的内容。
官方文档提供的其他几种方法参考https://www.geomesa.org/documentation/user/hbase/install.html
6. 设置命令行工具
在完成以上设置后,GeoMesa的主要部分就安装完成了。可以使用 bin/geomesa-hbase命令调用GeoMesa的命令行工具,执行一系列的功能。
这里要额外设置的是使用如下命令,将HBase配置文件hbase-site.xml打包进geomesa-hbase-datastore_2.11-$VERSION.jar中:
zip -r lib/geomesa-hbase-datastore_2.11-$VERSION.jar hbase-site.xml
这个过程一般无法100%执行完成,不过不用担心,
这一步的目的是确保在MapReduce任务中,GeoMesa能够顺利访问到该文件。
在这个过程当中,可能出现不能百分百执行完的情况,这是因为geomesa-hbase本身不能涵盖所有功能,因此不必担心。
7. 执行测试
重新启动zookeeper、hadoop、hbase,然后查看geomesa-hbase的版本
geomesa-hbase version
得到版本信息,标志着geomesa-hbase已经安装成功
- GeoMesa tools version: 2.1.0-SNAPSHOT
- Commit ID: 72ace4b8499fa0958a85a7b424f1fde47c446049
- Branch: master
- Build date: 2018-09-05T23:21:35-0400