May 12, 2022

Оптимизация управления ресурсами очереди Hadoop кластера

Вступление

С 19 февраля 2021 года был запущен сервис мониторинга нагрузки yarn очереди на 51 кластере, параллельно с этим на этапе каждого запуска собиралась статистика по пользователям и их приложениям, визуализацией которой я хотел бы поделиться в рамках этого доклада.

Используемые данные: 19.02.2021 - 18.04.2022 (день ребалансировки ресурсных пулов)

Мини статистика

Кол-во уникальных пользователей по месяцам:

  • Февраль: 49
  • Март: 59
  • Апрель: 55+

Всего уникальных за период: 69

Утилизация ресурсов

Ресурсы пула до 18 апреля: 470 ядер CPU и 2560 GB RAM

За счет усреднения по дню может показаться, что в очереди полно места даже в активные рабочие часы

Отфильтровав выходные и праздники, на графике видим более реалистичную картину

Немного сдвинем рабочий день

Результат работы сервиса

Напомню алгоритм "отключения" spark-сессий:

  • Сессия (spark-приложение) закрывается если в ней не было активности >= 2 часов
  • Сессия (spark-приложение) закрывается если последняя активность была >= 12 часов назад

Идеи на будущее

  • Расширить мониторинг на остальные очереди кластера (возможность провести анализ утилизации всего кластера и предложить варианты расширения очередей)
  • Ограничить верхнюю планку ресурсов на 1 приложение
  • Внеплановые запуски при 100% нагрузке на очередь
  • Ограничить кол-во одновременно активный spark-сессий на пользователя

Выводы

Ежедневно в очереди освобождается ~400-500 GB оперативной памяти и сопоставимое кол-во CPU ядер. Бывают и дни, в которые объемы неиспользуемой памяти достигают 800+ GB, что примерно 1/3 от всей yarn-очереди.

Более подробный материал: https://artydev.ru/posts/queue-hadoop-cluster/

Исходники скрипта: http://git.moscow.alfaintra.net/projects/AAADE/repos/aaade-py/browse/aaade/scripts

Большое спасибо всем за внимание.