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 EMR , Hortonworks' 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}/
$ hadoop fs -put ${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime-hbase1_${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}/
$ aws s3 cp ${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime-hbase1_${VERSION}.jar s3://${hbase.dynamic.jars.dir}/
如果需要,您可以通过设置系统属性来禁用分布式处理 geomesa.hbase.remote.filtering
至 false
。请注意,这可能会对性能产生不利影响。
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_HOME
和 HADOOP_HOME
,则GeoMesa将从这些位置加载适当的JAR和配置文件,不需要进一步的配置。否则,在您第一次调用这些工具时,系统将提示您下载适当的JAR。环境变量可以在 conf/*-env.sh
和依赖项版本可以在 conf/dependencies.sh
。
对于高级方案,环境变量 GEOMESA_HADOOP_CLASSPATH
和 GEOMESA_HBASE_CLASSPATH
可以设置为覆盖所有其他逻辑。
如果未设置任何环境变量,但 hbase
和 hadoop
命令可用,则GeoMesa将通过运行 hadoop classpath
和 hbase classpath
命令。请注意,这可能会很慢,因此通常最好使用 GEOMESA_HADOOP_CLASSPATH
和 GEOMESA_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"
使用EMR安装HBase或Hadoop时,需要使用特定于AWS的JAR(例如EMR FS)。建议使用EMR安装Hadoop和/或HBase,以便正确配置和安装这些依赖项(尤其是在S3上使用HBase时)。
如果您使用EMR安装Hadoop和HBase,则可以使用 hadoop classpath
和 hbase classpath
构建适当的类路径以包括GeoMesa HBase的JAR和配置文件的命令:
$ export GEOMESA_HADOOP_CLASSPATH=$(hadoop classpath)
$ export GEOMESA_HBASE_CLASSPATH=$(hbase classpath)
$ export GEOMESA_HBASE_HOME=/opt/geomesa
$ export PATH="${PATH}:${GEOMESA_HBASE_HOME}/bin"
将环境配置为使用HDP安装:
$ export HADOOP_HOME=/usr/hdp/current/hadoop-client/
$ export HBASE_HOME=/usr/hdp/current/hbase-client/
$ export GEOMESA_HBASE_HOME=/opt/geomesa
$ export PATH="${PATH}:${GEOMESA_HBASE_HOME}/bin"
如果没有本地的HBase实例,可以通过下载来安装所需的JAR。修改中的版本号 geomesa-hbase_${VERSION}/conf/dependencies.sh
要匹配目标系统并使用 geomesa-hbase_${VERSION}/bin/install-dependencies.sh
要安装它们,请执行以下操作:
$ cd geomesa-hbase_${VERSION}/bin
$ ./install-dependencies.sh
要连接到群集,请使用相应的 hbase-site.xml
是必需的。将其从您的群集中复制到 geomesa-hbase_${VERSION}/conf/
。
要运行映射/还原作业,请复制Hadoop *-site.xml
配置文件从Hadoop安装到 geomesa-hbase_${VERSION}/conf
。
要运行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/