J'essaye d'installer un groupe d'étincelles sur k8s. J'ai réussi à créer et à configurer un cluster avec trois nœuds en suivant cet article: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
Après cela, lorsque j'ai essayé de déployer spark sur le cluster, cela a échoué lors de la configuration de la soumission et de l'envoi. J'ai utilisé cette commande:
~/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
Et cela me donne cette erreur:
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 INFO ShutdownHookManager: 54 - Le crochet d'arrêt appelé 2018-06-04 10:58:24 INFO ShutdownHookManager: 54 - Suppression du répertoire/private/var/folder/lz/0bb8xlyd247cwc3kvh6pmr/00/spark-3967f4ae-e8b3-428d-ba22-580fc9c840cd
Note: J'ai suivi cet article pour installer spark sur k8s . https://spark.Apache.org/docs/latest/running-on-kubernetes.html
Le message d'erreur provient de commit 5d7c4ba4d73a72f26d591108db3c20b4a6c84f3f et comprend la page mentionnée: " Running Spark on Kubernetes " avec la mention que vous indiquez:
// 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.")
}
Ceci est décrit dans SPARK-18278 :
il n'accepterait pas l'exécution d'un fichier local: jar, par exemple.
local:///opt/spark/examples/jars/spark-examples_2.11-2.2.0-k8s-0.5.0.jar
, sur mon image du menu d'étincelle (allowsMixedArguments
etisAppResourceReq booleans
dansSparkSubmitCommandBuilder.Java
nous gênons).
Et ceci est lié au numéro 34377 de kubernetes
Le numéro SPARK-22962 "L’application Kubernetes échoue si des fichiers locaux sont utilisés" mentionne:
Il s'agit du cas d'utilisation du serveur de transfert de ressources. Nous l'améliorerons dans la période 2.4.0.
Entre-temps, ce message d'erreur a été introduit dans PR 20320 .
Il comprend le commentaire:
Les tests manuels que j’ai effectués utilisent en fait un fichier jar principal de l’application situé sur gcs et http.
Pour être précis et pour mémoire, j'ai fait les tests suivants:
- Utilisation d’un fichier jar principal de l’application gs: // et d’un fichier jar de dépendance http: //. Réussi.
- Utilisation d'un fichier jar principal de l'application https: // et d'un fichier jar de dépendance http: //. Réussi.
- Utilisation d'un fichier jar local: // main principal. Réussi.
- Utilisation d'un fichier jar: application principale. Échoué.
- Utilisation d'un fichier jar de dépendance fichier: //. Échoué.
Ce problème devrait déjà être résolu et le OP garfiny confirme dans les commentaires :
J'ai utilisé le plus récent
spark-kubernetes jar
pour remplacer celui du paquetspark-2.3.0-bin-hadoop2.7
. L'exception est parti.
Selon le documentation } _:
Gestion de la dépendance
Si les dépendances de votre application sont toutes hébergés dans des emplacements distants tels que les serveurs HDFS ou HTTP, ils peuvent être référencés par leurs URI distants appropriés. Aussi, application les dépendances peuvent être pré-montées dans des images Docker personnalisées. Ceux des dépendances peuvent être ajoutées au classpath en les référençant avec local: // URI et/ou définition de l'environnement SPARK_EXTRA_CLASSPATH variable dans vos fichiers Dockerfiles. Le schéma local: // est également requis lorsque vous faites référence à des dépendances dans des images Docker personnalisées dans spark-submit.
Notez que l’utilisation des dépendances d’application à partir du fichier Le système de fichiers local du client de soumission n’est pas encore pris en charge.
J'ai le même cas.
Je ne sais pas quoi faire? Comment réparer? Spark version 2.3.0.
Spark-kubernetes_2.11-2.3.1.jar copié et renommé -> spark-kubernetes_2.11-2.3.0.jar
Spark ne trouve pas les fichiers kubernetes correspondants.
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
Merci pour l'aide!