1

Я не могу найти рабочую опцию Spark, требующую исполнителей с графическим процессором.

Я пытаюсь настроить кластер HADOOP для запуска алгоритмов машинного обучения на доступных графических процессорах через Spark.

До сих пор я опробовал свою установку с минимальным кластером (1 менеджер ресурсов и 2 менеджера узлов (каждый с 8 ядрами, 32 ГБ ОЗУ, 1 Nvidia GPU), все работают под управлением Ubuntu 18.04.

Обнаружение ресурсов работает как положено (я вижу мои 16 ядер, 56 Гб памяти и 2 yarn.io/gpu)

Документация предоставляет способ, используя «--conf spark.yarn.executor.resource.yarn.io/gpu=1», но это не работает для меня (никакого эффекта вообще, как в параметре команды spark-submit, так и в $ SPARK_CONF/metrics.properties).

Поскольку YARN 3 является первым, кто обеспечивает изоляцию графического процессора, я стараюсь избегать отката к более старой (/ более документированной) версии.

Я думаю, это можно было бы установить в коде через SparkContext, и я был бы рад узнать, как это сделать, но, поскольку я больше на стороне администратора, чем на инженера ML, я бы предпочел установить это в файлах conf раз и навсегда. Во всяком случае, на данный момент, любое решение будет оценено.

Кто-нибудь рад предоставить хороший синтаксис для выделения GPU с включенной изоляцией ресурсов?

Люблю вас, ребята, Кевин

(Пряжа 3.1.1/3.2.0 на HortonWorks HDP)

1 ответ1

0

Поскольку Spark не любит много ресурсов YARN по сравнению с hadoop 3.0.0 (говорят, что Spark работает с Hadoop 2.6+, но это неявно означает «до 3.0 исключено»), обходной путь должен был установить yarn.resource-types.yarn. io/gpu.minimum-allocation to 1, и из моего кода на python отмените заказ исполнителя (spark не запускает AM с 0 исполнителем, запрашиваемым из командной строки)

sc = SparkContext(conf=SparkConf().setAppName("GPU on AM only").set("spark.executor.instances", 0))

Ужасно, но достаточно для наших текущих рабочих нагрузок, надеясь, что дистрибутив Spark for Hadoop 3.0+ будет достаточно скоро.

РЕДАКТИРОВАТЬ: Вы можете скомпилировать профиль Spark для Hadoop 3.1 из текущего состояния их репозитория github, после чего вы получите доступ к свойствам spark.yarn..resource.yarn.io/gpu !

Здесь я поделюсь своими выводами об изоляции:

Примерно после 2 недель различных попыток мы, наконец, остановились на полной очистке каждого хоста для чистой установки с нуля. Все еще ничего не работает. Затем мы попытались установить "один рабочий", чтобы вручную установить счетный ресурс, чтобы попробовать механизм распределения, а затем ... НИЧЕГО НЕ РАБОТАЕТ! Но мой Google был лучше подходит тогда. Кажется, это проблема, связанная с Hadoop, о пользовательских ресурсах и CapacityScheduler.

https://issues.apache.org/jira/browse/YARN-9161 https://issues.apache.org/jira/browse/YARN-9205

На данный момент (3.1.1/3.2.0) емкость.CapacityScheduler нарушается жестко закодированным перечислением, содержащим только параметры vCores и RAM. Вам просто нужно переключить свой класс планировщика на org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler Вы также хотите заменить "емкость" на "Fair" в строке yarn.scheduler.fair.resource-calculator = org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

Ваши графические процессоры не будут видны на пряжи ui2, но все равно будут присутствовать на NodeManager, и, что самое важное, будут распределены правильно. Это был беспорядок, чтобы узнать это действительно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .