Spark на K8s - ошибка: режим kube не поддерживает ссылки на приложения в локальной сети - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь настроить спарк-кластер на k8s.Мне удалось создать и настроить кластер с тремя узлами, следуя этой статье: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

После этого, когда я попытался развернуть искру в кластере, она не удалась при настройке спарк-отправки.Я использовал эту команду:

~/opt/spark/spark-2.3.0-bin-hadoop2.7/bin/spark-submit \
--master k8s://https://206.189.126.172:6443 \
--deploy-mode cluster \
--name word-count \
--class org.apache.spark.examples.SparkPi \
--conf spark.executor.instances=5 \
--conf spark.kubernetes.container.image=docker.io/garfiny/spark:v2.3.0 \
—-conf spark.kubernetes.driver.pod.name=word-count \
local:///opt/spark/examples/jars/spark-examples_2.11-2.3.0.jar

И это дает мне эту ошибку:

Exception in thread "main" org.apache.spark.SparkException: The Kubernetes mode does not yet support referencing application dependencies in the local file system.
    at org.apache.spark.deploy.k8s.submit.DriverConfigOrchestrator.getAllConfigurationSteps(DriverConfigOrchestrator.scala:122)
    at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:229)
    at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:227)
    at org.apache.spark.util.Utils$.tryWithResource(Utils.scala:2585)
    at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.run(KubernetesClientApplication.scala:227)
    at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.start(KubernetesClientApplication.scala:192)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:879)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:197)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:227)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

2018-06-04 10:58:24 ИНФОРМАЦИЯ ShutdownHookManager: 54 - Хук выключения называется 2018-06-04 10:58:24 ИНФОРМАЦИЯ ShutdownHookManager: 54 - Удаление каталога / private / var / folder / lz / 0bb8xlyd247cwc3kvh6pmrz00000gn / T / spark-3967f4ae-e8b3-428d-ba22-580fc9c840cd

Примечание: Iстатья по установке свечей на k8s.https://spark.apache.org/docs/latest/running-on-kubernetes.html

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Сообщение об ошибке приходит от commit 5d7c4ba4d73a72f26d591108db3c20b4a6c84f3f и включает упомянутую вами страницу: « Запуск Spark на Kubernetes » с указанием, которое вы указываете:

// TODO(SPARK-23153): remove once submission client local dependencies are supported.
if (existSubmissionLocalFiles(sparkJars) || existSubmissionLocalFiles(sparkFiles)) {
  throw new SparkException("The Kubernetes mode does not yet support referencing application " +
    "dependencies in the local file system.")
}

Это описано в SPARK-18278 :

не будет разрешено запускать локальный файл: jar, например, local:///opt/spark/examples/jars/spark-examples_2.11-2.2.0-k8s-0.5.0.jar, на моем образе искрового докера (allowsMixedArgumentsи isAppResourceReq booleans в SparkSubmitCommandBuilder.java мешают).

И это связано с проблемой kubernetes 34377

Проблема SPARK-22962 «Приложение Kubernetes не работает, если используются локальные файлы» * упоминает:

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

Между тем, это сообщение об ошибке было введено в PR 20320 .

Включает комментарий:

В ручных тестах, которые я действительно использовал, использовался основной jar-файл приложения, расположенный на gcs и http.
Чтобы быть точным и для записи, я провел следующие тесты:

  • Использование gs: // main jar приложения и http: // jar зависимости.Успешно.
  • Использование файла https: // основного приложения и файла http: // зависимости.Успешно.
  • Использование локального: // главного приложения jar.Успешно.
  • Использование файла: // основной файл приложения jar.Сбой.
  • Использование файла: // зависимость jar.Ошибка.

Эта проблема должна быть исправлена, и OP garfiny подтверждает в комментариях :

Я использовал новейший spark-kubernetes jar для замены одного в spark-2.3.0-bin-hadoop2.7 упаковке.Исключение исчезло.

0 голосов
/ 07 июля 2018

У меня такой же случай.

Я не знаю, что делать?Как исправить?Версия Spark 2.3.0.

Скопировано и переименовано в spark-kubernetes_2.11-2.3.1.jar -> spark-kubernetes_2.11-2.3.0.jar.

Spark не находит соответствующие файлы kubernetes.

bin/spark-submit \
--master k8s://https://lubernetes:6443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.kubernetes.namespace=spark \
--conf spark.executor.instances=5 \
--conf spark.kubernetes.container.image=gcr.io/cloud-solutions-images/spark:v2.3.0-gcs \
--conf spark.kubernetes.authenticate.submission.caCertFile=/var/run/secrets/kubernetes.io/serviceaccount/k8.crt \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \ 
local:///usr/spark-2.3.0/examples/jars/spark-examples_2.11-2.3.0.jar

Спасибо за помощь!

0 голосов
/ 01 июня 2018

Согласно упомянутой документации :

Управление зависимостями

Если все зависимости вашего приложения размещены в удаленных местах, таких как HDFS или HTTP-серверы, они могутбыть упомянутыми их соответствующими удаленными URI. Кроме того, зависимости приложения можно предварительно смонтировать в пользовательские образы Docker. Эти зависимости можно добавить в путь к классам, сославшись на них с помощью локальных URI и / или установив переменную среды SPARK_EXTRA_CLASSPATH в ваших файлах Docker., Схема local: // также требуется при обращении к зависимостям в пользовательских изображениях Docker в spark-submit .

Обратите внимание, что использование зависимостей приложения из локальной файловой системы клиента отправки в настоящее время еще не поддерживается.

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