Мастер Spark не будет отображать запущенное приложение в пользовательском интерфейсе, когда я использую Spark-submit для скрипта Python

‹Master_IP›: 8081 The image shows 8081 UI. Мастер показывает запущенное приложение, когда я запускаю оболочку scala или pyspark. Но когда я использую spark-submit для запуска скрипта python, master не показывает никаких запущенных приложений. Я использовал эту команду: spark-submit --master spark://localhost:7077 sample_map.py. Адрес веб-интерфейса: 4040. Я хочу знать, правильно ли я делаю это для отправки скриптов, или же spark-submit никогда не показывает запущенное приложение.

localhost:8080 или <master_ip>:8080 у меня не открывается, но открывается <master_ip>:8081. Он показывает информацию об исполнителе.

Это мои конфигурации в spark-env.sh:

export SPARK_EXECUTOR_MEMORY=512m 
export SPARK_MASTER_WEBUI_PORT=4040
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_INSTANCES=2 
export SPARK_WORKER_DIR=/opt/worker
export SPARK_DAEMON_MEMORY=512m
export SPARK_LOCAL_DIRS=/tmp/spark  
export SPARK_MASTER_IP 'splunk_dep'

Я использую CentOS, python 2.7 и spark-2.0.2-bin-hadoop2.7.


person kaks    schedule 01.12.2016    source источник


Ответы (4)


Для локального запуска используйте это:

val sparkConf = new SparkConf().setAppName("Your app Name").setMaster("local")
val sc = new SparkContext(sparkConf)

пока вы делаете sparkSubmit:

val sparkConf = new SparkConf().setAppName("Your app Name")
val sc = new SparkContext(sparkConf)

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

Надеюсь, это объясняет.

person toofrellik    schedule 02.12.2016
comment
Я этим не пользовался. Но я инициализировал SparkContext как sc = SparkContext("local","test"). Если я изменю его на sc = SparkContext("localhost","test"), я получаю сообщение об ошибке синтаксического анализа: «Не удалось проанализировать главный URL: 'localhost'». - person kaks; 02.12.2016
comment
если вы работаете на мастере, вам не нужно указывать его, удалите локальный и запустите его, он появится. - person toofrellik; 02.12.2016
comment
val sparkConf = new SparkConf().setAppName("Ad Request Metrics").setMaster("local") используйте это, здесь для тестовых целей use.setMaster("local"). но когда вы работаете в мастере, удалите это - person toofrellik; 02.12.2016
comment
Обновил мой ответ, проверьте это - person toofrellik; 02.12.2016
comment
Я использую питон. Итак, я попробовал sparkConf = new SparkConf().setAppName("test") sc = SparkContext(sparkConf) и получаю неверный синтаксис для SaprkConf(). Я правильно написал? - person kaks; 04.12.2016
comment
Большое спасибо! После такой долгой борьбы все понял. В pyspark я определил это так: sparkConf = SparkConf().setAppName("test") sc = SparkContext(conf=sparkConf). Теперь пользовательский интерфейс показывает мне работающее приложение. - person kaks; 05.12.2016

Вы можете открыть веб-интерфейс мастера искры, который по умолчанию является http://localhost:8080, чтобы увидеть запущенные приложения (в автономном режим кластера):  Spark Master UI

Если запущено несколько приложений - они будут привязаны к портам 4040, 4041, 4042 ...

Вы можете получить доступ к этому интерфейсу, просто открыв http: //: 4040 в веб-браузере. Если на одном хосте запущено несколько SparkContexts, они будут связываться с последовательными портами, начиная с 4040 (4041, 4042 и т. Д.).

person Artur Sukhenko    schedule 01.12.2016
comment
да. Но то же самое не работает только для искровой отправки с использованием скрипта Python. Картинка, которую вы показали, предназначена для оболочки Scala, верно? Оболочка Scala у меня работает и на 4040. - person kaks; 01.12.2016
comment
Оно делает. Я запустил ./bin/spark-submit --master spark: // node7: 7077 examples / src / main / python / pi.py 1000, и он действительно отобразился в пользовательском интерфейсе на 4040 и в завершенных приложениях на 8080. Вы уверен, что Spark-Master работает? Попробуйте ./sbin/start-all.sh - person Artur Sukhenko; 01.12.2016
comment
Вы запускали Spark Shell в локальном режиме или в автономном кластере? Вот документация о том, как настроить режим автономного кластера spark.apache.org/docs/ latest / spark-standalone.html - person Artur Sukhenko; 01.12.2016
comment
@kaks Что такое главный URL 8081? - person Artur Sukhenko; 01.12.2016
comment
Я прикрепил изображение к вопросу. - person kaks; 01.12.2016
comment
И я сделал кластеризацию в автономном режиме, я полагаю, потому что это был документ, которому я следовал. Пользовательский интерфейс искры показывает, что мастер все еще ЖИВ. Не могли бы вы сказать мне, что 1000 вы упомянули в своей команде spark-submit? - person kaks; 01.12.2016
comment
Это аргумент в пользу pi.py. Можете ли вы запустить это: ./bin/spark-submit --master spark: // splunk_dep: 7077 sample_map.py - person Artur Sukhenko; 01.12.2016
comment
У меня это тоже не работает. Я не понимаю. Он работает с оболочкой pyspark и scala, но не с функцией Spark-submit. - person kaks; 02.12.2016
comment
Спасибо. Оказалось, что порт находится на 4041, а не на 4040 - person Catbuilts; 03.12.2018

Вы получаете доступ к SPARK-UI, когда приложение работает или после того, как оно завершило свое выполнение?

Попробуйте добавить код, который будет ждать нажатия клавиши (следовательно, выполнение искры не закончится) - и посмотрите, решит ли он вашу проблему.

person Yaron    schedule 01.12.2016
comment
Я продолжаю обновлять пользовательский интерфейс во время выполнения скрипта и после его завершения. Но все равно этого не видно. Я попытался добавить пользовательский ввод между ними, но даже после этого изменений нет. - person kaks; 01.12.2016

Вы просто переходите на localhost: 8080 и проверяете, есть ли одно заполненное приложение, которое вы отправляете.

person Sandeep Purohit    schedule 01.12.2016
comment
Он не показывает ни одного заполненного приложения в 4040 только для искры. Для меня 8080 недоступен. - person kaks; 01.12.2016