Оптимизация управления ресурсами очереди Hadoop кластера
Вступление
С 19 февраля 2021 года был запущен сервис мониторинга нагрузки yarn очереди на 51 кластере, параллельно с этим на этапе каждого запуска собиралась статистика по пользователям и их приложениям, визуализацией которой я хотел бы поделиться в рамках этого доклада.
Используемые данные: 19.02.2021 - 18.04.2022 (день ребалансировки ресурсных пулов)
Мини статистика
Кол-во уникальных пользователей по месяцам:
Всего уникальных за период: 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