Почему задача spark выполняется на одном узле?

Я установил кластер Spark. У него 4 узла, но когда я запускаю пример SparkPi в кластере, работает только один узел. Как мне это решить?


person Scorpius Xia    schedule 11.06.2014    source источник
comment
Вы должны предоставить более подробную информацию о своей конфигурации для примера и некоторых журналах ошибок.   -  person eliasah    schedule 11.06.2014
comment
Я думаю, что в моей конфигурации могут быть некоторые ошибки, я установил только файл слейва и spark-env.sh, какие еще файлы мне нужно настроить?   -  person Scorpius Xia    schedule 12.06.2014
comment
Что вы подразумеваете под ведомым файлом? Spark должен работать поверх распределенной вычислительной инфраструктуры, что вы используете?   -  person eliasah    schedule 12.06.2014
comment
У меня есть четыре узла, на одном работает мастер, а на других — рабочий.   -  person Scorpius Xia    schedule 12.06.2014
comment
Я согласен с тем, что просмотр конфигурации и выходных данных журнала облегчил бы помощь. Но их отсутствие на самом деле делает вопрос более общим. Это как запись FAQ. Я думаю, что это может быть очень полезно, так как я уверен, что другие окажутся в такой же ситуации. Почему он работает на одном узле? Я лучше улучшу вопрос, чем закрою его.   -  person Daniel Darabos    schedule 12.06.2014
comment
извините, мой английский не очень хорошо пишет, поэтому иногда я не могу выразить то, что хочу сказать.   -  person Scorpius Xia    schedule 12.06.2014


Ответы (1)


Возможно, вы запускаете пример в локальном режиме. То есть в примере кластер вообще не используется. В этом легко убедиться: остановите мастер Spark и посмотрите, работает ли еще пример.

http://spark.apache.org/docs/latest/submitting-applications.html описывает, как запустить пример.

bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master local \
  /path/to/examples.jar \
  100

Вам нужно заменить local чем-то вроде spark://spark-master.example.com:7077.

Другим объяснением может быть то, что по какой-то причине к мастеру подключился только один рабочий процесс. Или мастер по какой-то причине назначает приложению только ограниченные ресурсы. Вы можете проверить оба из них в главном пользовательском интерфейсе. (http://spark-master.example.com:8080/)

Наконец, может случиться так, что ваши данные разбиты на слишком мало разделов, и все они извлекаются одной машиной. В приведенном выше примере 100 — это количество разделов. Если вы опустите его, по умолчанию будет 2. Если у ваших воркеров 2 и более ядер, велика вероятность, что один из них подхватит оба раздела. Вы можете увидеть, так ли это, когда посмотрите на выполненные этапы в пользовательском интерфейсе приложения. (http://localhost:4040/stages) Решение состоит в том, чтобы увеличить количество разделов.

person Daniel Darabos    schedule 11.06.2014
comment
./bin/run-example SparkPi 10000 spark://master:7077 Я использую эту команду для запуска примера, и из 4040 я могу найти только одного исполнителя. - person Scorpius Xia; 12.06.2014
comment
Хорошо, тогда вы не в локальном режиме! Я еще немного подумал и добавил еще несколько возможных объяснений к ответу. Пожалуйста, посмотрите и посмотрите, поможет ли один из них! - person Daniel Darabos; 12.06.2014