Druid: как кэшировать все данные исторических узлов в памяти

У меня есть около 10 ГБ данных, хранящихся на историческом узле. Однако потребление памяти для этого узла составляет около 2 ГБ.

Когда я запускаю запрос выбора, результаты возвращаются в первый раз более чем за 30 секунд. Далее они идут на втором месте (из-за кеширования брокеров).

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

Вопрос: каковы параметры конфигурации, чтобы исторический узел кэшировал все данные в памяти?


person DrWho3    schedule 01.01.2017    source источник


Ответы (1)


В Druid нет прямого механизма для принудительного кэширования данных. Чтобы решить эту проблему, вы можете попробовать запустить несколько фиктивных запросов при запуске, которые загрузили бы сегмент данных в память. Существуют различные уровни кешей, которые вступают в игру при запуске запросов друидов:

  1. Кэш в исторических узлах
  2. Кеш на узлах брокера
  3. Кеш страницы

Первые два кэша настраиваются и могут быть включены / выключены в соответствии с требованиями, тогда как кеш страницы полностью контролируется базовой ОС. Поскольку в вашей настройке у вас много свободной памяти в истории, я бы посоветовал вам запускать фиктивные запросы при запуске, которые охватывают все исторические сегменты, которые будут приносить все данные сегментов в кеш страницы, и любые запросы, запущенные позже, выиграют от этого.

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

person rohit kochar    schedule 09.01.2017
comment
Хороший ответ и хорошее решение, спасибо! В заключение, возможно, Druid - не лучший инструмент для этой цели. По информации, знаете ли вы, есть ли более подходящие инструменты? (Я имею в виду программное обеспечение, в котором все ваши большие данные могут быть готовы в памяти для быстрого выбора запросов, без каких-либо дополнительных действий) - person DrWho3; 14.01.2017
comment
Вот несколько известных мне баз данных в памяти: VoltDB и Apache Geode. Я лично не использовал Geode, поэтому не могу поручиться за его производительность, но мое первоначальное чтение его документации заставило меня поверить, что он может быть хорошим кандидатом для базы данных больших данных в памяти. - person rohit kochar; 20.01.2017