14.2. 手工协处理器注册

在大多数情况下,您不需要做任何事情来注册协处理器。如果您已在以下位置安装了GeoMesa分布式运行时JAR hbase.dynamic.jars.dir ,详情请参阅 寄存协处理器 ,则协处理器将自动注册。

但是,在某些情况下,您可能希望以不同的方式注册协处理器。

14.2.1. 在站点范围内注册

可以将协处理器登记在主存储器中 hbase-site.xml 。要做到这一点,只需将协处理器类名称添加到 hbase.coprocessor.user.region.classes 钥匙。请注意,这需要将HBase设置为离线。

<configuration>
  <property>
    <name>hbase.coprocessor.user.region.classes</name>
    <value>org.locationtech.geomesa.hbase.server.coprocessor.GeoMesaCoprocessor</value>
  </property>
</configuration>

所有新的和现有的非系统表都将可以访问GeoMesa协处理器。

14.2.2. 通过类路径按表注册

如果 geomesa-hbase-distributed-runtime JAR位于主服务器和所有区域服务器的HBase类路径上,它将在创建GeoMesa表时自动注册。要将JAR放在类路径上,请修改 hbase-env.sh 文件,并将路径添加到 geomesa-hbase-distributed-runtime 罐子里的 HBASE_CLASSPATH 财产。

14.2.3. 通过GeoMesa配置按表注册

如果GeoMesa环境配置正确,则在创建GeoMesa表时将注册协处理器。这个 geomesa-hbase-distributed-runtime 主服务器和所有区域服务器都必须可以访问JAR,这通常意味着它应该位于HDFS或S3中。

JAR的路径可以通过系统属性进行配置,也可以直接作为数据存储参数进行配置。

如果直接使用数据存储,则可以使用数据存储参数设置JAR路径 coprocessor.url

在任何环境中,都可以通过Java系统属性设置JAR路径 geomesa.hbase.coprocessor.path 。如果使用GeoMesa命令行工具,则可以在Shell环境中使用 JAVA_TOOL_OPTIONS 环境变量:

export JAVA_TOOL_OPTIONS="${JAVA_TOOL_OPTIONS} -Dgeomesa.hbase.coprocessor.path=hdfs://path/to/geomesa-runtime.jar"

或者,它可以设置在 geomesa-env.sh 脚本:

setvar CUSTOM_JAVA_OPTS "${JAVA_OPTS} -Dgeomesa.hbase.coprocessor.path=hdfs://path/to/geomesa-runtime.jar"

第三种选择是使用 geomesa-site.xml 配置文件:

<property>
    <name>geomesa.hbase.coprocessor.path</name>
    <value>hdfs://path/to/geomesa-runtime.jar</value>
</property>

14.2.4. 通过HBaseShell按表注册

HBaseShell可用于在每个表的基础上注册协处理器,如下所示。请注意,这要求表处于离线状态。

指定协处理器时,该协处理器必须在所有主服务器和区域服务器上的HBase类路径上可用,或者您必须提供 geomesa-hbase-distributed-runtime JAR中部署的 安装GeoMesa分布式运行时JAR

要运行HBaseShell,只需执行:

$ ${HBASE_HOME}/bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
hbase(main):001:0>

要获取当前运行的表的列表,请执行以下操作:

hbase(main):001:0> list
TABLE
geomesa
geomesa_QuickStart_id
geomesa_QuickStart_z2
geomesa_QuickStart_z3
4 row(s) in 0.1380 seconds

您将需要在所有索引表上安装协处理器。这个 geomesa 本例中的表是元数据表,不需要安装协处理器。

您可以使用 alter 命令修改表的配置。这个 coprocessor 参数中的 alter 命令可被修改以更改GeoMesa协处理器的注册。

'coprocessor'=>'HDFS_URL|org.locationtech.geomesa.hbase.server.coprocessor.GeoMesaCoprocessor|PRIORITY|'

的“价值”。 coprocessor 参数有四个部分,由 | ,其中两个, HDFS_URLPRIORITY 可根据您的环境进行配置。

  • 要提供 geomesa-hbase-distributed-runtime JAR将协处理器值中的HDFS_URL替换为HDFS URL。只有在以下情况下才需要这样做 geomesa-hbase-distributed-runtime JAR将不会以其他方式出现在类路径上。

  • 要更改协处理器的优先级(执行顺序)将优先级更改为所需的值,这是可选的,如果不使用,则应保留为空。

hbase(main):040:0> alter 'geomesa_QuickStart_id', METHOD => 'table_att', 'coprocessor'=>'|org.locationtech.geomesa.hbase.server.coprocessor.GeoMesaCoprocessor||'
Updating all regions with the new schema...
22/22 regions updated.
Done.
0 row(s) in 5.0000 seconds

hbase(main):041:0> alter 'geomesa_QuickStart_z2', METHOD => 'table_att', 'coprocessor'=>'|org.locationtech.geomesa.hbase.server.coprocessor.GeoMesaCoprocessor||'
Updating all regions with the new schema...
4/4 regions updated.
Done.
0 row(s) in 2.8850 seconds

hbase(main):042:0> alter 'geomesa_QuickStart_z3', METHOD => 'table_att', 'coprocessor'=>'|org.locationtech.geomesa.hbase.server.coprocessor.GeoMesaCoprocessor||'
Updating all regions with the new schema...
4/4 regions updated.
Done.
0 row(s) in 2.9150 seconds

要验证此操作是否成功,请运行:

hbase(main):002:0> describe 'TABLE_NAME'
Table TABLE_NAME is ENABLED
TABLE_NAME, {TABLE_ATTRIBUTES => {coprocessor$1 => '|org.locationtech.geomesa.hbase.server.coprocessor.GeoMesaCoprocessor||'}
COLUMN FAMILIES DESCRIPTION
{NAME => 'm', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_EN
CODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '655
36', REPLICATION_SCOPE => '0'}
1 row(s) in 0.1940 seconds