14.1. 安装GeoMesa HBase

备注

GeoMesa目前支持HBase versions 2.5 and 1.4 。

备注

以下示例要求在环境中设置版本:

$ export TAG="4.0.2"
$ export VERSION="2.12-${TAG}" # note: 2.12 is the Scala build version

GeoMesa支持传统的HBase安装以及在 Amazon's EMRHortonworks' Data Platform (HDP) ,而 Cloudera Distribution of Hadoop (CDH) 。有关引导EMR群集的详细信息,请参阅 在AWS S3上引导GeoMesa HBase 。有关部署到Cloudera CDH的详细信息,请参阅 在Cloudera CDH 5.X上部署GeoMesa HBase

14.1.1. 安装二进制分发版

GeoMesa HBase构件可以下载,也可以从源代码构建。最简单的入门方法是从下载最新的二进制版本 GitHub.

下载并将其解压到方便的位置:

# download and unpackage the most recent distribution:
$ wget "https://github.com/locationtech/geomesa/releases/download/geomesa-${TAG}/geomesa-hbase_${VERSION}-bin.tar.gz"
$ tar xvf geomesa-hbase_${VERSION}-bin.tar.gz
$ cd geomesa-hbase_${VERSION}

14.1.2. 从源开始构建

GeoMesa HBase也可以从源代码构建。有关详细信息,请参阅上的说明 GitHub 。本章剩余的说明假定使用二进制GeoMesa HBase分布。如果您是从源代码构建的,则在 target 目录号 geomesa-hbase/geomesa-hbase-dist

14.1.3. 安装GeoMesa分布式运行时JAR

GeoMesa使用定制的HBase过滤器和协处理器来加快查询速度。GeoMesa提供了两个分布式运行时JAR,一个用于HBase 1.x,另一个用于HBase 2.x。

警告

确保为您的HBase版本使用正确的GeoMesa分布式JAR

您必须将分布式运行时JAR部署到由HBase配置变量指定的目录 hbase.dynamic.jars.dir 。这被设置为 ${hbase.rootdir}/lib 默认情况下。将分发运行时JAR复制到此目录,如下所示:

$ hadoop fs -put ${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime-hbase2_${VERSION}.jar ${hbase.dynamic.jars.dir}/

如果在Amazon S3上运行,则需要使用 aws s3 命令行工具。

$ aws s3 cp ${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime-hbase2_${VERSION}.jar s3://${hbase.dynamic.jars.dir}/

如果需要,您可以通过设置系统属性来禁用分布式处理 geomesa.hbase.remote.filteringfalse 。请注意,这可能会对性能产生不利影响。

14.1.3.1. 寄存协处理器

假设您已经将分布式运行时JAR安装在 hbase.dynamic.jars.dir 时,协处理器将自动注册。 createSchema 在数据存储上。或者,可以手动注册协处理器。看见 手工协处理器注册 了解更多细节。

有关管理协处理器的更多信息,请参见 Coprocessor Introduction 在阿帕奇的博客上。

14.1.4. 设置HBase命令行工具

警告

要通过命令行工具使用HBase数据存储,您需要首先安装分布式运行时。看见 安装GeoMesa分布式运行时JAR

GeoMesa附带了一组命令行工具,用于管理位于 geomesa-hbase_${VERSION}/bin/ 二进制分布的。

GeoMesa要求 java 以在默认路径上可用。

14.1.4.1. 配置类路径

GeoMesa在类路径上需要HBase和Hadoop JAR。默认情况下,它们不捆绑在一起,因为它们应该与目标系统上安装的版本相匹配。

如果环境变量 HBASE_HOMEHADOOP_HOME ,则GeoMesa将从这些位置加载适当的JAR和配置文件,不需要进一步的配置。否则,在您第一次调用这些工具时,系统将提示您下载适当的JAR。环境变量可以在 conf/*-env.sh 和依赖项版本可以在 conf/dependencies.sh

对于高级方案,环境变量 GEOMESA_HADOOP_CLASSPATHGEOMESA_HBASE_CLASSPATH 可以设置为覆盖所有其他逻辑。

如果未设置任何环境变量,但 hbasehadoop 命令可用,则GeoMesa将通过运行 hadoop classpathhbase classpath 命令。请注意,这可能会很慢,因此通常最好使用 GEOMESA_HADOOP_CLASSPATHGEOMESA_HBASE_CLASSPATH 如上所述。

将GeoMesa配置为使用预安装的HBase和Hadoop发行版:

$ 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"

要运行MAP/RECESS和Spark作业,您需要 hbase-site.xml 放到分布式类路径上的JAR中。将其添加到 geomesa-hbase-datastore 罐子里的 lib 文件夹:

$ zip -r lib/geomesa-hbase-datastore_${VERSION}.jar hbase-site.xml

警告

确保 hbase-site.xml 位于JAR的根(顶层)级别,否则将不会被拾取。

GeoMesa还提供了使用环境变量将其他JAR添加到类路径的功能 $GEOMESA_EXTRA_CLASSPATHS 。GeoMesa会将此环境变量的内容添加到计算的类路径中,从而使其在类路径中具有最高的优先级。用户可以使用冒号提供JAR文件或单个文件的目录 (: )作为分隔符。这些条目还将添加到map-create libjars变量中。

由于许可限制,必须单独安装形状文件支持的从属项。使用以下命令执行此操作:

$ ./bin/install-shapefile-support.sh

有关日志记录,请参阅 日志记录配置 了解有关配置SLF4J实现的信息。

使用 geomesa-hbase classpath 用于打印执行GeoMesa命令时将使用的最终类路径的命令。

14.1.4.2. 配置路径

为了能够运行 geomesa-hbase 命令,您可以在任何地方设置环境变量 GEOMESA_HBASE_HOME 并通过修改bashrc文件将其添加到您的路径中:

$ echo 'export GEOMESA_HBASE_HOME=/path/to/geomesa-hbase_${VERSION}' >> ~/.bashrc
$ echo 'export PATH=${GEOMESA_HBASE_HOME}/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc
$ which geomesa-hbae

14.1.4.3. 正在运行的命令

测试调用GeoMesa工具的命令:

$ geomesa-hbase

输出应如下所示::

Usage: geomesa-hbase [command] [command options]
  Commands:
  ...

有关可用命令的详细信息,请参见 HBase命令行工具

14.1.5. 在Geoserver中安装GeoMesa HBase

警告

看见 Geoserver版本 以确保Geoserver与您的GeoMesa版本兼容。

默认情况下,HBase Geoserver插件捆绑在GeoMesa二进制分发版中。要安装,请解压缩 $GEOMESA_HBASE_HOME/dist/gs-plugins/geomesa-hbase-gs-plugin_${VERSION}-install.tar.gz 进入Geoserver的 WEB-INF/lib 目录。

此分发不包括HBase客户端、Hadoop或ZooKeeper JAR。这些JAR可以使用 bin/install-dependencies.sh 二进制分发中包含的脚本。在运行之前,请在中设置版本号 conf/dependencies.sh 以根据需要匹配您的目标安装。

HBase数据存储需要配置文件 hbase-site.xml 在类路径上。这可以通过将文件放在 geoserver/WEB-INF/classes (如果该目录不存在,则应创建该目录)。

安装JAR后重新启动Geoserver。

14.1.6. 连接到由S3支持的外部HBase群集

要使用EMR集群连接到现有的外部HBase集群,请首先按照上述说明设置新集群并安装GeoMesa。

下一步是获取 hbase-site.xml 对于外部HBase群集,复制到新的EMR群集并将其复制到 ${GEOMESA_HBASE_HOME}/conf 。此时,您可以运行 geomesa-hbase 命令行工具。要运行Spark或映射/还原作业,请确保 hbase-site.xml 如上所述,用拉链装进罐子里。

14.1.7. 在Azure HDInsight上配置HBase

HDInsight通常会创建 HBASE_HOME 在HDFS中的路径下 /hbase 。为了使GeoMesa协处理器和筛选器可用于区域服务器,请使用 hadoop 将GeoMesa JAR放在那里的文件系统命令:

hadoop fs -mkdir /hbase/lib
hadoop fs -put geomesa-hbase-distributed-runtime-hbase1-$VERSION.jar /hbase/lib/