Geomesa 索引是否可靠并与主 table 保持同步?

Is Geomesa indexes are reliable and remain in sync with main table?

为了创建索引,Geomesa 在 HBase 中创建了多个 table。我有几个问题:

  1. Geomesa 如何确保这些 table 同步?
  2. 如果索引 table 不同步,会对 Geomesa 查询产生什么影响?
  3. 如果 Geomesa 无法写入其中一个索引 tables,会发生什么情况(使用 write 调用)?
  4. table 之间的同步是最大努力还是 Geomesa 确保数据的可用性和最终一致性?

我打算结合使用 Geomesa 和 Hbase(由 S3 支持)来存储我的地理空间数据;数据大小可以增长到 TB 到 PB。

我正在调查 Geomesa 在主数据库和索引之间的同步方面的可靠性 table?

HBase Tables:

目录 1
catalog1_node_id_v4(主要Table)
catalog1_node_z2_geom_v5(索引Table)
catalog1_node_z3_geom_lastUpdateTime_v6(索引Table)
catalog1_node_attr_identifier_geom_lastUpdateTime_v8(索引Table)

Geomesa 模式

geomesa-hbase describe-schema -c catalog1 -f node

INFO 描述特征的属性 'node'

关键 |字符串
名称空间 |字符串
标识符 |字符串(属性索引)
版本号 |字符串
节点编号 |字符串
纬度 |整数 经度 |整数 最后更新时间 |日期(时空索引)
标签 |地图
地理 | Point (Spatio-temporally indexed) (空间索引)

用户数据: geomesa.index.dtg |最后更新时间
geomesa.indices | z3:6:3:geom:lastUpdateTime,z2:5:3:geom,id:4:3:,attr:8:3:identifier:geom:lastUpdateTime

GeoMesa 不会做任何同步索引的事情——通常这应该在您的摄取管道中处理。

如果您有一个可靠的特征 ID 与给定的输入特征相关联,那么您可以多次编写该特征而不会导致重复。在摄取过程中,如果一批功能因暂时性问题而失败,那么您可以 re-write 它们以确保索引正确。

对于 HBase,当您在功能编写器上调用 flushclose 时,挂起的突变将被发送到集群。一旦该方法 returns 成功,则数据已持久化到 HBase。如果抛出异常,您应该 re-try 失败的功能。如果随后出现 HBase 故障,您可能需要根据标准 HBase 操作恢复 write-ahead 日志 (WAL)。

功能也可能由于验证而无法写入(例如空几何)。在这种情况下,您不希望 re-try 该功能,因为它永远不会成功摄取。如果您使用的是 GeoMesa 转换器框架,您可以 pre-validate 功能以确保它们能够正常摄取。

如果您还没有摄取管道,您可能需要查看 geomesa-nifi,它可以让您转换和验证输入数据,并且 re-try 通过 Nifi 流自动失败。