Apache Drill, занимающий много места в куче - PullRequest
0 голосов
/ 11 февраля 2019

Привет! Я использую Apache Drill версии 1.15 в распределенном режиме на 3 узлах с кворумом ZK из 3 узлов для запроса небольшого CSV-файла объемом 150 МБ.Но, Drill идет вперед и использует 4 ГБ-6 ГБ памяти Heap.Для тестирования я выделил 18 ГБ пространства кучи (32 ГБ памяти на всех 3 узлах).

После запуска 3-4 похожих запросов в пользовательском интерфейсе Drill, тренировка использовала почти 80-90% доступной памяти кучи.

У меня есть конфигурации по умолчанию, за исключением 18 ГБ кучи и 20 ГБ прямой памяти.

enter image description here Кроме того, даже после нескольких минут выполнения запроса память кучи остается занятой.

Я сомневаюсь, что это правильное поведение Apache Drill?или мне не хватает какой-то точки?

1 Ответ

0 голосов
/ 15 февраля 2019

Использование памяти HEAP зависит не только от размера источника данных, но и от сложности SQL-запроса, поскольку для оптимизации планирования HEP-планировщик Calcite создает большую группу DAG с вершинами RelNode.Он использует алгоритм DEPTH_FIRST для применения различных правил оптимизации, а затем рекурсивно обрабатывает дочерние элементы для получения наилучшего логического плана.И память HEAP используется для всего этого процесса.

Что касается использования памяти кучи после выполнения запроса, Drill использует различные механизмы кэширования для улучшения выполнения следующего запроса.

ЕслиВы можете найти странный размер объектов в дампе кучи, не стесняйтесь спрашивать сообщество Drill .

...