Задание Spark ОТПРАВЛЕНО, но не выполняется после отправки через REST API

#scala #rest #apache-spark

#отдых #apache-spark

Вопрос:

Следуя инструкциям на этом веб-сайте, я пытаюсь отправить задание в Spark через REST API /v1/submissions .

Я попытался отправить SparkPi в примере:

 $ ./create.sh 
{
  "action" : "CreateSubmissionResponse",
  "message" : "Driver successfully submitted as driver-20211212044718-0003",
  "serverSparkVersion" : "3.1.2",
  "submissionId" : "driver-20211212044718-0003",
  "success" : true
}

$ ./status.sh driver-20211212044718-0003
{
  "action" : "SubmissionStatusResponse",
  "driverState" : "SUBMITTED",
  "serverSparkVersion" : "3.1.2",
  "submissionId" : "driver-20211212044718-0003",
  "success" : true
}
 

create.sh :

 curl -X POST http://172.17.197.143:6066/v1/submissions/create --header "Content-Type:application/json;charset=UTF-8" --data '{
  "appResource": "/home/ruc/spark-3.1.2/examples/jars/spark-examples_2.12-3.1.2.jar",
  "sparkProperties": {
    "spark.master": "spark://172.17.197.143:7077",
    "spark.driver.memory": "1g",
    "spark.driver.cores": "1",
    "spark.app.name": "REST API - PI",
    "spark.jars": "/home/ruc/spark-3.1.2/examples/jars/spark-examples_2.12-3.1.2.jar",
    "spark.driver.supervise": "true"
  },
  "clientSparkVersion": "3.1.2",
  "mainClass": "org.apache.spark.examples.SparkPi",
  "action": "CreateSubmissionRequest",
  "environmentVariables": {
    "SPARK_ENV_LOADED": "1"
  },
  "appArgs": [
    "400"
  ]
}'
 

status.sh :

 export DRIVER_ID=$1

curl http://172.17.197.143:6066/v1/submissions/status/$DRIVER_ID
 

Но когда я пытаюсь получить статус задания (даже через несколько минут), я получаю «ОТПРАВЛЕНО», а не «ЗАПУЩЕНО» или «ЗАВЕРШЕНО».

Затем я просмотрел журнал и обнаружил, что

 21/12/12 04:47:18 INFO master.Master: Driver submitted org.apache.spark.deploy.worker.DriverWrapper
21/12/12 04:47:18 WARN master.Master: Driver driver-20211212044718-0003 requires more resource than any of Workers could have.
# ...
21/12/12 04:49:02 WARN master.Master: Driver driver-20211212044718-0003 requires more resource than any of Workers could have.
 

Однако, по-моему spark-env.sh , у меня есть

 export SPARK_WORKER_MEMORY=10g
export SPARK_WORKER_CORES=2
 

Я понятия не имею, что произошло. Как я могу заставить его работать нормально?

Комментарии:

1. Убедитесь, что у вас есть 10 ГБ памяти в качестве spark-env.sh , и попытайтесь уменьшить appArgs с 400 до 10. похоже, у вас нет ресурсов для запуска приложения.

2. @Yassine Abdul-Rahman /proc/meminfo показывает, что у меня есть как минимум 4 ГБ свободной памяти, затем я меняю spark-env.sh до 1 г и уменьшите количество порций до 10. Но это все равно не работает.

3. Если у этого сервера spark есть пользовательский интерфейс, не могли бы вы перейти на вкладку исполнители и проверить, правильно ли созданы драйверы и рабочие с достаточным количеством потоков для обработки?

Ответ №1:

Поскольку вы проверили ресурсы, и у вас их достаточно. Это может быть проблема с сетью. возможно, исполнитель не может подключиться обратно к программе драйвера. Разрешить трафик как для master, так и для workers.

Комментарии:

1. Я не думаю, что это так, потому что все работает хорошо, когда я отправляю spark-submit через терминал.

2. Более того, я проверил $SPARK_HOME/logs и обнаружил, что только в главном журнале есть что-то об этом драйвере, и ни один из рабочих журналов не был изменен.

3. Хорошо, оказывается, что вы в некотором роде правы. Несколько месяцев назад кто-то открыл spark непосредственно с помощью java, который занимал порт 7077. Я не находил этого, пока не упомянул, что spark UI все еще работал даже после того, как я закрыл spark.