Сценарий, скопированный с веб-сайта dask, является условным действием boostrap.
Следующая строка позволяет запускать его только на главном узле:
grep -q '"isMaster": true' /mnt/var/lib/info/instance.json \
|| { echo "Not running on master node, nothing to do" && exit 0; }
Проверяется instance.json
файл для записи "isMaster". Если значение равно false, сценарий завершается с 0.
В идеале YARN будет развертывать необходимые пакеты для Dask для всех рабочих.
Это действительно зависит от вашего варианта использования. Я не развернул dask в многоузловом кластере. Например, Spark позволяет указывать сжатые зависимости при отправке задач, поэтому не обязательно устанавливать их.
Установка пакетов на всех узлах упрощает пакетирование задания. Однако можно столкнуться с конфликтующими зависимостями довольно быстро, так как люди запускают совершенно не связанные задания с каждым собственным набором зависимостей. Можно также c запустить несколько clsuters для каждого задания.
Если вы раскомментируете строку, код будет выполняться на всех узлах. Однако, возможно, вы хотите, чтобы на узлах были установлены только некоторые зависимости, а на мастере было установлено больше персонала. В этом случае вы можете выполнить несколько действий начальной загрузки.
Например, не требуется устанавливать и запускать персонал ноутбука jupyter на каждом узле.
Руководство по работе с пряжей предлагает предоставить архивную среду при отправке. Таким образом, текст написан так, чтобы работать только на главном узле.