Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark “线程中的异常”;“主要”;org.apache.spark.SparkException:必须指定驱动程序容器映像_Apache Spark_Docker_Kubernetes_Kubectl_Minikube - Fatal编程技术网

Apache spark “线程中的异常”;“主要”;org.apache.spark.SparkException:必须指定驱动程序容器映像

Apache spark “线程中的异常”;“主要”;org.apache.spark.SparkException:必须指定驱动程序容器映像,apache-spark,docker,kubernetes,kubectl,minikube,Apache Spark,Docker,Kubernetes,Kubectl,Minikube,我正在尝试使用命令从本地机器CLI在minikube(Kubernetes)上执行spark提交 spark-submit --master k8s://https://127.0.0.1:8001 --name cfe2 --deploy-mode cluster --class com.yyy.Test --conf spark.executor.instances=2 --conf spark.kubernetes.container.image docker.io/anantpukal

我正在尝试使用命令从本地机器CLI在minikube(Kubernetes)上执行spark提交

spark-submit --master k8s://https://127.0.0.1:8001 --name cfe2 
--deploy-mode cluster --class com.yyy.Test --conf spark.executor.instances=2 --conf spark.kubernetes.container.image docker.io/anantpukale/spark_app:1.1 local://spark-0.0.1-SNAPSHOT.jar
我有一个简单的基于verison 2.3.0的spark作业罐。我还在docker和minikube中进行了集装箱化,并在虚拟箱上运行。 下面是异常堆栈:

Exception in thread "main" org.apache.spark.SparkException: Must specify the driver container image at org.apache.spark.deploy.k8s.submit.steps.BasicDriverConfigurationStep$$anonfun$3.apply(BasicDriverConfigurationStep.scala:51) at org.apache.spark.deploy.k8s.submit.steps.BasicDriverConfigurationStep$$anonfun$3.apply(BasicDriverConfigurationStep.scala:51) at scala.Option.getOrElse(Option.scala:121)  at org.apache.spark.deploy.k8s.submit.steps.BasicDriverConfigurationStep.<init>(BasicDriverConfigurationStep.scala:51)
        at org.apache.spark.deploy.k8s.submit.DriverConfigOrchestrator.getAllConfigurationSteps(DriverConfigOrchestrator.scala:82)
        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-04-06 13:33:52 INFO  ShutdownHookManager:54 - Shutdown hook called 2018-04-06 13:33:52 INFO  ShutdownHookManager:54 - Deleting directory C:\Users\anant\AppData\Local\Temp\spark-6da93408-88cb-4fc7-a2de-18ed166c3c66
线程“main”org.apache.spark.sparkeexception中的异常:必须在org.apache.spark.deploy.k8s.submit.steps.BasicDriverConfigurationStep$$anonfun$3.apply(BasicDriverConfigurationStep.scala:51)org.apache.spark.deploy.k8s.submit.steps.BasicDriverConfigurationStep$$anonfun$3.apply中指定驱动程序容器映像(BasicDriverConfigurationStep.scala:51)位于org.apache.spark.deploy.k8s.submit.steps.BasicDriverConfigurationStep的scala.Option.getOrElse(Option.scala:121)
位于org.apache.spark.deploy.k8s.submit.DriverConfigOrchestrator.getAllConfigurationSteps(DriverConfigOrchestrator.scala:82)
位于org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:229)
位于org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:227)
位于org.apache.spark.util.Utils$.tryWithResource(Utils.scala:2585)
位于org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.run(KubernetesClientApplication.scala:227)
位于org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.start(KubernetesClientApplication.scala:192)
位于org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:879)
位于org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:197)
位于org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:227)
位于org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136)
在org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)2018-04-06 13:33:52信息关闭钩子管理器:54-名为2018-04-06 13:33:52信息关闭钩子管理器:54-删除目录C:\Users\anant\AppData\Local\Temp\spark-6da93408-88cb-4fc7-a2de-18ed16c36

看起来像是带有参数默认值的bug
spark.kubernetes.driver.container.image
,必须是
spark.kubernetes.container.image
。因此请尝试直接指定驱动程序/执行器容器映像:

  • spark.kubernetes.driver.container.image
  • spark.kubernetes.executor.container.image
从中,唯一可用的配置选项是:

spark.kubernetes.container.image
spark.kubernetes.driver.container.image
spark.kubernetes.executor.container.image
我注意到,与2.2.0相比,Spark 2.3.0在k8s实现方面有了很大的变化。例如,与单独指定驱动程序和执行程序不同,官方入门指南是使用一个单独的映像提供给
Spark.kubernetes.container.image

看看这是否有效:

spark-submit \
--master k8s://http://127.0.0.1:8001 \
--name cfe2 \
--deploy-mode cluster \
--class com.oracle.Test \
--conf spark.executor.instances=2 \
--conf spark.kubernetes.container.image=docker/anantpukale/spark_app:1.1 \
--conf spark.kubernetes.authenticate.submission.oauthToken=YOUR_TOKEN \
--conf spark.kubernetes.authenticate.submission.caCertFile=PATH_TO_YOUR_CERT \
local://spark-0.0.1-SNAPSHOT.jar

令牌和证书可在k8s仪表板上找到。请按照以下步骤制作与Spark 2.3.0兼容的docker映像。

Spark提交--master k8s://https://127.0.0.1:8001 --名称cfe2——部署模式集群——类cluster com.oracle.Test——conf spark.executor.instances 2——conf spark.kubernetes.driver.docker.image docker.io/anantpukale/spark_app:1.1--conf spark.kubernetes.executor.docker.image docker.io/anantpukale/spark_应用程序:1.1--conf spark.kubernetes.initcontainer.docker.image docker.io/anantpukale/spark_应用程序:1.1local://spark-0.0.1-SNAPSHOT.jar
也给出了相同的错误(相同的堆栈跟踪)如果您按照所编写的方式使用该命令,则中间有一个换行符。:稍微更改了上面的代码
spark submit--master k8s://http://127.0.0.1:8001 --名称cfe2——部署模式集群——类com.oracle.Test——conf spark.executor.instances=2——conf spark.kubernetes.container.image=docker/anantpukale/spark_app:1.1——conf spark.kubernetes.driver.container.image=docker.io/kubespark/spark-driver:v2.2.0-kubernetes-0.5.0--conf spark.kubernetes.executor.container.image=docker.io/kubespark/spark-executor:v2.2.0-kubernetes-0.5.0local://spark-0.0.1-SNAPSHOT.jar
,输出:HTTP 502网关错误。以上设置位于公司防火墙后面。如何绕过?用户名:@wolich22,我试图通过创建kube pod来完成spark提交。结果是exitCode=127。在哪里检查应用程序日志???@AnantPukale如果键入
kubectl cluster info
,您可以看到kube dashboard的托管位置,您可以从dashboard查看作业和检查日志。驱动程序pod在堆栈下失败
++id-u+myuid=0++id-g+mygid=0++getent passwd 0+uidentry=root:x:0:0:root:/root:/bin/ash+'['-z root:x:0:0:root:/root:/bin/ash']+/sbin/tini-s--driver[FATAL tini(10)]exec驱动程序失败:没有使用这样的文件或目录
驱动程序映像是docker。io/kubespark/spark驱动程序:v2.2.0-kubernetes-0.5.0这是使用spark 2.2.0的docker映像时出现的错误。您需要使用2.3.0的docker-image-tool.sh生成新映像。