Запуск задания на 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

Начальная работа не принимала никаких ресурсов; проверьте свой пользовательский интерфейс кластера, чтобы убедиться, что работники зарегистрированы и имеют достаточную память