Производительность запросов Geomesa

Geomesa - это пространственно-временная база данных, более подробная информация доступна здесь: http://www.geomesa.org/

Я пробую учебное пособие, настраивая базу данных Hbase. Я использую учебное пособие по Hbase QuickStart http://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.html Учебное пособие работает нормально, ниже приведены некоторые проблемы, которые я замечаю при выполнении запросов в ограничительной рамке.

Я вставил данные с диапазоном широты, долготы (30,60) - (35,65)

В этих настройках я делаю запрос на моем локальном компьютере:
a) В моем первом запросе ограничивающий прямоугольник: (30,60) - (30.1,60.1), он работает в среднем менее чем за секунду и возвращает правильные результаты.
b) Во втором запросе я изменил ограничивающую рамку местоположения (10,10) на (30.1,60.1). Этот запрос также возвращает те же результаты, что и в запросе (a), что ожидается, но в среднем это занимает около 3-4 секунд на запрос.

Поскольку оба запроса должны давать одинаковые результаты, но один выполняется намного быстрее, чем другой. Я замечаю аналогичное поведение и в запросах во временной области, где производительность даже намного хуже (в 10 раз медленнее или даже больше), если временные диапазоны не совпадают с вставленными данными. Ниже приведены некоторые из моих вопросов:
1) Это ожидаемое поведение?
2) Я знаю, что одним из решений может быть переформатирование запроса для сопоставления с фактическими пространственными и временными диапазонами данных, вставленными в Geomesa, что потребует от меня сохранения дополнительных метаданных о данных. Но я думаю, что лучшее решение может быть разработано на уровне Geomesa?

Сделайте, дайте мне знать, если есть какие-то настройки и т.д., которые могут повлиять на это поведение. Я видел такое же поведение на нескольких других локальных машинах и в облачной VMS при настройке Geomesa.

1 ответ

Решение

В общем, GeoMesa по-прежнему должен сканировать, где могут быть данные, даже если на самом деле там нет никаких данных. Открытие сканирования, даже если оно не возвращает данных, занимает некоторое время. Для временных запросов число диапазонов, как правило, еще больше, что приводит к снижению производительности.

Я считаю, что Accumulo справляется с этим немного лучше, чем HBase, так как он имеет концепцию пакетного сканера, который принимает несколько диапазонов, и имеет некоторые знания о начале / конце данных. Для HBase GeoMesa должна выполнять несколько сканирований с использованием пула потоков, поэтому это не так эффективно.

GeoMesa также имеет концепцию статистики данных, но она еще не реализована для HBase и в настоящее время не используется при планировании запросов.

Чтобы смягчить проблему, вы можете попробовать увеличить параметр хранилища данных "queryThreads", чтобы использовать больше потоков во время запросов. Вы также можете включить функцию "ooseBoundingBox", если вы его отключили. Для временных запросов увеличение периода временного биннинга может привести к сканированию меньшего количества диапазонов. Однако это может привести к более медленным запросам для очень малых временных диапазонов, поэтому его следует адаптировать к вашему варианту использования.

В завершение убедитесь, что у вас установлены и включены распределенные сопроцессоры, особенно если вы не используете свободные ограничивающие блоки.

Другие вопросы по тегам