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

时间:2019-05-29 00:03:22

标签: geolocation geomesa

要创建索引,Geomesa会在HBase中创建多个表。我有几个问题:

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

我计划将Geomesa与Hbase(由S3支持)组合使用以存储我的地理空间数据;数据大小可以增长到TB到PB。

我正在调查在主表和索引表之间的同步方面Geomesa的可靠性如何?

HBase表:

catalog1
catalog1_node_id_v4(主表)
catalog1_node_z2_geom_v5(索引表)
catalog1_node_z3_geom_lastUpdateTime_v6(索引表)
catalog1_node_attr_identifier_geom_lastUpdateTime_v8(索引表)

Geomesa架构

geomesa-hbase describe-schema -c catalog1 -f节点

INFO描述特征“节点”的属性

键|字符串
 命名空间|字符串
 标识符|字符串(索引属性)
 versionId |字符串
 nodeId |字符串
 纬度|整数  经度|整数  lastUpdateTime |日期(时空索引)
 标签|地图
 geom |点(时空索引)(空间索引)

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

1 个答案:

答案 0 :(得分:0)

GeoMesa不会做任何同步索引的操作-通常应在您的提取管道中对此加以注意。

如果您有与给定输入功能绑定的可靠功能ID,则可以多次写入该功能而不会导致重复。在摄取期间,如果一批功能由于暂时性问题而失败,那么您可以重新编写它们以确保索引正确。

对于HBase,当您在功能编写器上调用flushclose时,待处理的变异将发送到群集。一旦该方法成功返回,则数据已保存到HBase。如果引发异常,则应重试失败的功能。如果随后发生HBase故障,则可能需要按照标准HBase操作恢复预写日志(WAL)。

由于验证(例如,空几何),特征也可能无法写入。在这种情况下,您将不想重试该功能,因为它将永远不会成功提取。如果您使用的是GeoMesa转换器框架,则可以pre-validate个功能以确保它们可以正常使用。

如果您还没有摄取管道,则可能要签出geomesa-nifi,这将使您转换和验证输入数据,并通过Nifi流自动重试失败。