Запуск задания на Spark 0.9.0 throws error
У меня установлен Apache Spark 0.9.0 Cluster, где я пытаюсь развернуть код, который читает файл из HDFS. Эта часть кода выдает предупреждение и, в конце концов, работа завершается неудачно. Вот код
/**
* running the code would fail
* with a warning
* Initial job has not accepted any resources; check your cluster UI to ensure that
* workers are registered and have sufficient memory
*/
object Main extends App {
val sconf = new SparkConf()
.setMaster("spark://labscs1:7077")
.setAppName("spark scala")
val sctx = new SparkContext(sconf)
sctx.parallelize(1 to 100).count
}
Ниже приведено сообщение ПРЕДУПРЕЖДЕНИЕ
Начальная работа не принимала никаких ресурсов; проверьте свой пользовательский интерфейс кластера на убедитесь, что работники зарегистрированы и имеют достаточную память
как избавиться от этого, или я пропущу некоторые конфигурации.
Ответы
Ответ 1
Вы получаете это, когда либо количество ядер, либо количество ОЗУ (за node), которое вы запрашиваете, с помощью параметра spark.cores.max
и spark.executor.memory
resp 'превышает доступное. Поэтому, даже если никто не использует кластер, и вы указываете, что хотите использовать, скажем, 100 ГБ оперативной памяти на node, но ваши узлы могут поддерживать только 90 ГБ, тогда вы получите это сообщение об ошибке.
Чтобы быть справедливым, сообщение нечеткое в этой ситуации, было бы более полезно, если бы он сказал, что превысил максимум.
Ответ 2
Похоже, мастер Spark не может назначить рабочих для этой задачи. Либо рабочие не запущены, либо все заняты.
Проверьте интерфейс Spark на master node (порт указан SPARK_MASTER_WEBUI_PORT
в spark-env.sh
, 8080 по умолчанию). Он должен выглядеть следующим образом: ![SparkUI Sample]()
Для правильной работы кластера:
- Должны быть некоторые рабочие с состоянием "Живой"
- Должны быть доступны некоторые ядра (например, если все ядра заняты замороженной задачей, кластер не будет принимать новые задачи)
- Должно быть достаточно доступной памяти
Ответ 3
Также убедитесь, что ваши работники искры могут общаться в обоих направлениях с водителем. Проверьте наличие брандмауэров и т.д.
Ответ 4
У меня была эта точная проблема. У меня был простой 1- node Spark-кластер и получал эту ошибку при попытке запустить приложение Spark.
Я просмотрел некоторые из приведенных выше предложений, и именно тогда, когда я попытался запустить оболочку Spark против кластера и не смог увидеть это в пользовательском интерфейсе, я стал подозревать, что мой кластер работает некорректно.
В моем файле hosts у меня была запись, скажем SparkNode
, которая ссылалась на правильный IP-адрес.
Я случайно поместил неправильный IP-адрес в файл conf/spark-env.sh
по переменной SPARK_MASTER_IP
. Я изменил это на SparkNode
, а также изменил SPARK_LOCAL_IP
на SparkNode
.
Чтобы проверить это, я открыл пользовательский интерфейс, используя SparkNode:7077
в браузере, и я мог видеть экземпляр запуска Spark.
Затем я использовал предложение Wildfires о запуске оболочки Spark следующим образом:
MASTER=spark://SparkNode:7077 bin/spark-shell
Возвращаясь к пользовательскому интерфейсу, я теперь мог видеть, как работает приложение оболочки Spark, чего я раньше не мог.
Итак, я вышел из оболочки Spark и запускал приложение, используя Spark Submit, и теперь он работает правильно.
Конечно, стоит проверить все ваши записи IP и хоста, это стало основной причиной моей проблемы.
Ответ 5
Вам нужно указать правильный IP-адрес SPARK_HOME и вашего драйвера, если Spark не сможет найти ваш сервер Netty jar. Имейте в виду, что ваш мастер Spark должен прослушивать правильный IP-адрес, который вы предполагаете использовать. Это можно сделать, установив SPARK_MASTER_IP = yourIP в файле spark-env.sh.
val conf = new SparkConf()
.setAppName("test")
.setMaster("spark://yourSparkMaster:7077")
.setSparkHome("YourSparkHomeDir")
.set("spark.driver.host", "YourIPAddr")
Ответ 6
Проверьте наличие ошибок, связанных с именем хоста, IP-адресом и шлейфом. Обязательно установите SPARK_LOCAL_IP
и SPARK_MASTER_IP
.
Ответ 7
У меня была аналогичная проблема. Первоначальное задание не приняло никакого ресурса, исправил его, указав исправить правильный URL-адрес загрузки на spark-env.sh или установив искру на всех подчиненных.
export SPARK_EXECUTOR_URI = http://mirror.fibergrid.in/apache/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz
Начальная работа не принимала никаких ресурсов; проверьте свой пользовательский интерфейс кластера, чтобы убедиться, что работники зарегистрированы и имеют достаточную память