Невозможно создать сеанс зажигания с использованием пряжи внутри капсулы kubernetes. - PullRequest
0 голосов
/ 31 октября 2019

У меня есть модуль kubernetes с установленным клиентом spark.

bash-4.2# spark-shell --version
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.1.1.2.6.2.0-205
      /_/

Using Scala version 2.11.8, Java HotSpot(TM) 64-Bit Server VM, 1.8.0_144
Branch HEAD
Compiled by user jenkins on 2017-08-26T09:32:23Z
Revision a2efc34efde0fd268a9f83ea1861bd2548a8c188
Url git@github.com:hortonworks/spark2.git
Type --help for more information.
bash-4.2#

Я могу успешно отправить задание spark в режиме клиента и кластера, используя следующие команды:

${SPARK_HOME}/bin/spark-submit --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=$PYTHONPATH:/usr/local/spark/python:/usr/local/spark/python/lib/py4j-0.10.4-src.zip --master yarn --deploy-mode client --num-executors 50 --executor-cores 4 --executor-memory 3G  --driver-memory 6G my_python_script.py --config=configurations/sandbox.yaml --startdate='2019-01-01' --enddate='2019-08-01'
${SPARK_HOME}/bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --num-executors 3 --driver-memory 512m --executor-memory 512m --executor-cores 1 ${SPARK_HOME}/lib/spark-examples*.jar 10

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

spark-shell --master yarn
pyspark --master yarn

Он зависает и время ожидания истекает с этой ошибкой:

org.apache.spark.SparkException: Yarn application has already ended! It might have been killed or unable to launch application master.

У нас есть еще один скрипт на python, который должен создать сеанс spark. Код этого сценария:

from pyspark import SparkConf
from pyspark.sql import SparkSession
conf = SparkConf()
conf.setAll(configs.items())
spark = SparkSession.builder.config(conf=conf).enableHiveSupport().getOrCreate()

Не уверен, где еще проверить. Это первый раз, когда мы инициируем искровое соединение внутри кластера kubernetes. Получение спарк-сеанса внутри обычной виртуальной машины работает нормально. Не уверен, в чем разница с точки зрения сетевого подключения. Меня также озадачивает то, что я смог подать задание выше, но не смог создать сеанс искры.

Любые мысли и идеи высоко ценятся. Заранее спасибо.

1 Ответ

0 голосов
/ 31 октября 2019

В режиме клиента на вашем компьютере запущен процесс Spark Driver, а исполнители работают на узлах Yarn (spark-shell и pyspark отправляют сеансы в режиме клиента). Связанные процессы Драйвер и Исполнитель должны иметь возможность подключаться друг к другу через сеть в обоих направлениях.

Поскольку отправка заданий в кластерном режиме работает для вас, и вы можете связаться с хозяином Yarn из сети Kubernetes Pod, этот маршрутЭто хорошо. Скорее всего, у вас нет доступа к сети из кластерной сети Yarn к модулю Pod, который, скорее всего, находится в частной сети Kubernetes, если не указан явно. Это первое, что я бы порекомендовал вам проверить, а также журналы Yarn.

После того, как вы сделаете Pod доступным из кластерной сети Yarn, вы можете обратиться к следующим настройкам спарк для привязок установки:

- spark.driver.host
- spark.driver.port
- spark.driver.bindAddress
- spark.blockManager.port

Найдите их описания в документах .

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