ݺߣ

ݺߣShare a Scribd company logo
Динамическая аллокация
ресурсов или как жить в
условиях общежития
MOSCOW SPARK #2
Вопрос в зал
Сколько человек у вас в компании
пользуется спарком?
Наш кейс
35-40 порой одновременных
пользователей
Предыстория
- Кто вы?
- Мы образовательная компания.
Есть 4 программы в области данных.
Предыстория
Предыстория
6 запусков
200+ выпускников
Предыстория
Кластер состоит из 6 серверов. Каждый сервер:
• 120 ГБ RAM
• 24 ядра
• 1 ТБ диск
Предыстория
0
20
40
60
80
100
120
mon
tue
wed
thu
fri
sat
sun
mon
tue
wed
thu
fri
sat
sun
mon
tue
wed
thu
fri
sat
sun
mon
tue
wed
thu
fri
sat
sun
mon
tue
wed
thu
fri
sat
sun
Примерная загрука кластера во времени
Динамическая аллокация
Делёжка ресурсов
Стандартный вариант: каждому application
выделяется фиксированное количество ресурсов.
Делёжка ресурсов
114 ядер мы могли бы довести до 120.
Равномерно поделить среди 40 юзеров. Каждому
по 3 ядра. И 11 гигов оперативки.
Делёжка ресурсов
Динамическая
аллокация
Другой вариант: включить динамическую
аллокацию. Тогда Spark будет выдавать под
тяжелые джобы больше ресурсов, когда кластер
свободен.
Динамическая
аллокация
Другой вариант: включить динамическую
аллокацию. Тогда Spark будет выдавать под
тяжелые джобы больше ресурсов, когда кластер
свободен.
🔥
spark.dynamicAllocation.enabled=true
spark.shuffle.service.enabled=true
Динамическая
аллокация
Spark выдает таскам экзекьюторы. Под каждый
экзекьютор YARN выдает контейнер, состоящий из
памяти и ядер.
Настраивается это в YARN.
Динамическая
аллокация
Супер! Ресурсы динамически выдаются, но…
не всегда забираются обратно 😭
Динамическая
аллокация
Супер! Ресурсы динамически выдаются, но…
не всегда забираются обратно 😭
spark.dynamicAllocation.executorIdleTimeout=60s
spark.dynamicAllocation.cachedExecutorIdleTimeout=600s
Динамическая
аллокация
Но порой кто-то мог всё равно занимать часами
весь кластер своим джобом 😤
Динамическая
аллокация
Но порой кто-то мог всё равно занимать часами
весь кластер своим джобом 😤
spark.dynamicAllocation.maxExecutors=19
Итог
1. Более эффективное использование ресурсов
даже при большом количестве одновременных
юзеров.
2. Более равномерная загрузка кластера за счёт
правильных стимулов.
Bonus track: другие
проблемы общежития
Порты
И вот идёт занятие. Опоздавшие не могут
получить Spark Context.
spark.port.maxRetries=50
Джарники
Подтягивание jar-файлов, необходимых для
работы.
spark.yarn.archive=hdfs:///tmp/spark-archive.zip
Kryo
Сериалайзер может быть быстрее.
spark.serializer=org.apache.spark.serializer.KryoSerializer
Обновление до 2.1.1
Запускаем. Ошибка.
java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig
😡
Обновление до 2.1.1
Запускаем. Ошибка.
java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig
😡
Нужно скачать версию jersey 1.17.1 и добавить в
тот самый архив на HDFS.
Обновление до 2.1.1
Новая ошибка! 😩
org.apache.spark.SparkException: Yarn application has already ended! It might have been
killed or unable to launch application master
Обновление до 2.1.1
Новая ошибка! 😩
org.apache.spark.SparkException: Yarn application has already ended! It might have been
killed or unable to launch application master
В логах application’а нашли такое:
/usr/hdp/${hdp.version}/hadoop/lib/hadoop-lzo-0.6.0.${hdp.version}.jar
Обновление до 2.1.1
Новая ошибка! 😩
org.apache.spark.SparkException: Yarn application has already ended! It might have been
killed or unable to launch application master
Решение. Прописать параметр в настройках YARN
hdp.version=2.5.3.0-37
Обновление до 2.1.1
И вот оно занятие. Но в какой-то момент ресурсы
перестают выдаваться опять! 🤦♂️
Обновление до 2.1.1
И вот оно занятие. Но в какой-то момент ресурсы
перестают выдаваться опять! 🤦♂️
Оказалось, что нужно изменить параметр в
настройках YARN:
yarn.scheduler.capacity.maximum-am-resource-percent=1.0
Ссылки
1. https://habrahabr.ru/company/npl/blog/327556/ - мой пост на Хабре
2. Старый пост на Medium
3. http://spark.apache.org/docs/latest/running-on-yarn.html
4. http://spark.apache.org/docs/latest/configuration.html
Контакты
Артем Пичугин
Head of data-related programs
apichugin@newprolab.com
Динамическая аллокация ресурсов или как жить в условиях общежития?

More Related Content

Динамическая аллокация ресурсов или как жить в условиях общежития?