Nikolay
Интересно как они используют спотовые инстансы. Их же могут в любой момент забрать. Значит там нельзя хранить временные данные. Иначе эти данные пропадут при отключении. Выходит , что нужен обязательный шафл сервис, который будет жить уже не на спотовых или с репликацией. Иначе придется джобу с начала самого запускать , а не только таску перезапустить в случае terminate для спотового
Ответ немного не в тему, так как про EMR, но, думаю, должно быть что-то похожее.
В обычном EMR у нод есть тег. Когда создаешь группу, указываешь CORE она или WORKER. WORKER делают работу и допускают Spot Instance. на CORE работает driver и они на on-demand машинах. То есть, фишка в тегах.
При этом я не в курсе тонкостей HDFS. В сеттинге EMR часто все данные хранят на S3, HDFS используется самим Spark для хранения temp данных. Или в вашем pipeline вы хотите посчитать что-то “полу-персистентное” (используй, если есть, посчитай и используй иначе).
Теоретически можно и CORE машины запускать на Spot’ах. Но если обычный Worker убили - просто пересчитаются несколько tasks, все произойдет прозрачно. Если убили драйвер - весь application придется перезапускать.
Hint: для Worker в проде используйте 2 разных типа spot машин, так как возможны каскадные отключения.