Надежны ли индексы Geomesa и синхронизированы ли они с основной таблицей?

Для создания индексов Geomesa создает несколько таблиц в HBase. У меня есть несколько вопросов:

  1. Что делает Geomesa для синхронизации этих таблиц?
  2. Как повлияет на запрос Geomesa, если индексные таблицы не синхронизированы?
  3. Что произойдет (с вызовами записи), если Geomesa не сможет записать одну из индексных таблиц?
  4. Синхронизация между таблицами — лучший вариант, или Geomesa обеспечивает доступность данных с возможной согласованностью?

Я планирую использовать комбинацию Geomesa с Hbase (при поддержке S3) для хранения своих геопространственных данных; размер данных может вырасти до терабайтов или петабайтов.

Я изучаю, насколько надежна 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 description-schema -c catalog1 -f node

ИНФОРМАЦИЯ Описание атрибутов функции «узел»

ключ | пространство имен String
| Идентификатор строки
| Строка (индексированный атрибут)
versionId | String
идентификатор узла | Строка
широта | Целая долгота | Целое число lastUpdateTime | Теги даты (с пространственно-временной индексацией)
| Карта
геометрия | Точка (с пространственно-временной индексацией) (с пространственной индексацией)

Данные пользователя: geomesa.index.dtg | lastUpdateTime
geomesa.indices | z3:6:3:geom:lastUpdateTime,z2:5:3:geom,id:4:3:,attr:8:3:identifier:geom:lastUpdateTime


person Amit    schedule 29.05.2019    source источник


Ответы (1)


GeoMesa ничего не делает для синхронизации индексов — обычно об этом следует позаботиться в вашем конвейере загрузки.

Если у вас есть надежный идентификатор функции, привязанный к данной входной функции, вы можете написать эту функцию несколько раз, не создавая дубликатов. Если во время загрузки происходит сбой пакета функций из-за временной проблемы, вы можете просто переписать их, чтобы убедиться, что индексы верны.

Для HBase, когда вы вызываете flush или close для средства записи функций, ожидающие изменения будут отправлены в кластер. После успешного завершения этого метода данные сохраняются в HBase. Если возникнет исключение, вам следует повторно попробовать неудавшиеся функции. При последующих сбоях HBase может потребоваться восстановить журналы упреждающей записи (WAL) в соответствии со стандартной операцией HBase.

Функция также может не быть записана из-за проверки (например, нулевая геометрия). В этом случае вы не захотите повторно использовать эту функцию, так как она никогда не будет успешно принята. Если вы используете платформу конвертера GeoMesa, вы можете предварительно проверить функции, чтобы гарантировать, что они будут нормально приниматься.

Если у вас еще нет конвейера загрузки, вы можете проверить geomesa-nifi, который позволит вам преобразовывать и проверять входные данные, а также автоматически повторять неудачные попытки через потоки Nifi.

person Emilio Lahr-Vivaz    schedule 29.05.2019
comment
Спасибо Эмилио за объяснение. Какое исключение выдает Geomesa, когда ему не удается записать разные индексные таблицы? У вас есть какой-нибудь документ о списках исключений, которые выдает geomesa? - person Amit; 29.05.2019
comment
Если это ошибка проверки, обычно это будет IllegalArgumentException. Если есть ошибка записи в HBase, это будет любое исключение, которое выдает клиент HBase. - person Emilio Lahr-Vivaz; 30.05.2019
comment
Основываясь на вашем ответе, я предполагаю, что когда Geomesa попытается вставить данные в индексную таблицу (например, catalog1_node_z3_geom_lastUpdateTime_v6), и это не удастся, Geomesa выдаст исключение Hbase, даже если она успешно сохранила данные в другой индексированной таблице и основной таблице. Правильно ли это понимание? - person Amit; 30.05.2019
comment
Да, именно поэтому вы должны повторить неудачную запись — это гарантирует возможную согласованность. - person Emilio Lahr-Vivaz; 30.05.2019