Spark REST API, отправьте приложение NullPointerException в Windows - PullRequest
0 голосов
/ 07 сентября 2018

Я использовал свой компьютер в качестве сервера Spark и одновременно с Spark Worker, используя Spark 2.3.1.

Сначала я использовал Ubuntu 16.04 LTS. Все работает отлично, я попытался запустить пример SparkPi (используя spark-submit и spark-shell), и он может работать без проблем. Я также пытаюсь запустить его с помощью REST API от Spark, используя следующую строку POST:

curl -X POST http://192.168.1.107:6066/v1/submissions/create --header "Content-Type:application/json" --data '{
  "action": "CreateSubmissionRequest",
  "appResource": "file:/home/Workspace/Spark/spark-2.3.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.1.jar",
  "clientSparkVersion": "2.3.1",
  "appArgs": [ "10" ],
  "environmentVariables" : {
    "SPARK_ENV_LOADED" : "1"
  },
  "mainClass": "org.apache.spark.examples.SparkPi",
  "sparkProperties": {
    "spark.jars": "file:/home/Workspace/Spark/spark-2.3.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.1.jar",
    "spark.driver.supervise":"false",
    "spark.executor.memory": "512m",
    "spark.driver.memory": "512m",
    "spark.submit.deployMode":"cluster",
    "spark.app.name": "SparkPi",
    "spark.master": "spark://192.168.1.107:7077"
  }
}'

После тестирования того и того, мне нужно перейти на Windows, так как в любом случае это будет сделано на Windows. Я смог запустить сервер и рабочий (вручную), добавить winutils.exe и запустить пример SparkPi, также используя spark-shell и spark-submit, все, что тоже можно запустить. Проблема в том, когда я использовал REST API, используя следующую строку POST:

curl -X POST http://192.168.1.107:6066/v1/submissions/create --header "Content-Type:application/json" --data '{
      "action": "CreateSubmissionRequest",
      "appResource": "file:D:/Workspace/Spark/spark-2.3.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.1.jar",
      "clientSparkVersion": "2.3.1",
      "appArgs": [ "10" ],
      "environmentVariables" : {
        "SPARK_ENV_LOADED" : "1"
      },
      "mainClass": "org.apache.spark.examples.SparkPi",
      "sparkProperties": {
        "spark.jars": "file:D:/Workspace/Spark/spark-2.3.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.1.jar",
        "spark.driver.supervise":"false",
        "spark.executor.memory": "512m",
        "spark.driver.memory": "512m",
        "spark.submit.deployMode":"cluster",
        "spark.app.name": "SparkPi",
        "spark.master": "spark://192.168.1.107:7077"
      }
    }'

Только путь немного другой, но мой работник всегда терпел неудачу. В журналах сказано:

"Exception from the cluster: java.lang.NullPointerException                                                
org.apache.spark.deploy.worker.DriverRunner.downloadUserJar(DriverRunner.scala:151)
org.apache.spark.deploy.worker.DriverRunner.prepareAndRunDriver(DriverRunner.scal173)
org.apache.spark.deploy.worker.DriverRunner$$anon$1.run(DriverRunner.scala:92)"

Я искал, но решения пока не найдено ..

1 Ответ

0 голосов
/ 07 сентября 2018

Итак, наконец-то я нашел причину.

Я прочитал источник из: https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/deploy/worker/DriverRunner.scala

Из проверки я пришел к выводу, что проблема не в Spark, но параметр не читается правильно. Что значит, я поставил неверный формат параметра.

Итак, после того, как опробовал несколько вещей, эта - правильная:

appResource": "file:D:/Workspace/Spark/spark-2.3.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.1.jar"

изменено на:

appResource": "file:///D:/Workspace/Spark/spark-2.3.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.1.jar"

И я сделал то же самое с параметром spark.jars.

Эта небольшая разница стоила мне почти 24 часов работы ... ~~~~

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...