Назначьте конкретную машину с Apache Spark

Я совершенно новичок в вещах типа Spark и Hadoop в целом, так что простите меня, если это болезненно простой вопрос. Я пытаюсь разработать систему, которая будет использовать кластер из некоторого количества машин для выполнения первых задач в серии задач. Последующие задачи, которые выполняются на RDD, которые генерируются первыми задачами, должны выполняться на одном компьютере. Это может быть любая машина из кластера, при условии, что это всегда эта машина на время выполнения программы.

Как мне в этом убедиться? Могу ли я зарезервировать одну машину в кластере и всегда выполнять на ней последующие задачи? Если да, то как это выглядит на Java? Если нет, есть ли другой способ добиться этого?


person Jess    schedule 15.10.2014    source источник


Ответы (1)


В общем нет. Spark, как и Hadoop, предназначен для более или менее произвольного распределения задач по доступным узлам и предполагает, что все доступные узлы эквивалентны для его целей. Никто из них особо лечиться не будет.

Если вы не хотите, чтобы вторая половина процесса выполнялась (более или менее) в массовом параллельном режиме, вы, вероятно, не захотите использовать структуру параллельной обработки для этой половины задания. Возможно, вам стоит записать все данные параллельных вычислений куда-нибудь на диск, а затем запустить вторую половину задания с данными, но не как преобразования Spark RDD, а как обычный код Scala, который считывает файлы и обрабатывает их. Сложно сказать.

Почему все «последующие задачи» должны выполняться в одном конкретном месте? Если вы сможете подробнее объяснить эту потребность, возможно, кто-нибудь сможет сделать для вас хорошие предложения.

person DPM    schedule 19.10.2014
comment
Последующие задачи включают добавление информации во внешнюю базу знаний. Задачи добавляют информацию в эту базу знаний в определенном порядке, поэтому более поздние задачи зависят от доступности этой более ранней информации. Ваше предложение запустить вторую половину задания не так, как преобразования RDD, звучит правильно. Однако более ранние задания выполняются просто как преобразования. Нужна ли мне операция действия для выполнения этих преобразований, поскольку преобразования являются ленивыми? - person Jess; 20.10.2014
comment
Да, вы, вероятно, захотите закончить все с помощью saveAsTextFile или собрать (или что-то подобное) какое-то промежуточное состояние, которое может быть обработано задачами базы знаний. - person DPM; 21.10.2014