Apache spark 提交给kubernetes群集中的Spark Master

Apache spark 提交给kubernetes群集中的Spark Master,apache-spark,kubernetes,Apache Spark,Kubernetes,我有一个只由一个VM组成的Kubernetes集群(minikube集群) 在这个集群上,我有一个Spark Master和两个Worker在运行。我已按以下方式设置Ingress插件(我的spark组件使用默认端口): 我在我的/etc/hosts [MINIKUBE_IP] spark-kubernetes 我可以通过http://spark-kubernetes/web-ui: 现在我想提交一个存储在本地机器上的JAR(例如spark示例)。我希望这个命令能起作用: ./bin/spa

我有一个只由一个VM组成的Kubernetes集群(minikube集群)

在这个集群上,我有一个Spark Master和两个Worker在运行。我已按以下方式设置Ingress插件(我的spark组件使用默认端口):

我在我的
/etc/hosts

[MINIKUBE_IP] spark-kubernetes
我可以通过
http://spark-kubernetes/web-ui

现在我想提交一个存储在本地机器上的JAR(例如spark示例)。我希望这个命令能起作用:

./bin/spark-submit \
    --master spark://spark-kubernetes \
    --deploy-mode cluster \
    --class org.apache.spark.examples.SparkPi \
     ./examples/jars/spark-examples_2.11-2.4.0.jar
但我得到了以下错误:

2019-04-04 08:52:36 WARN  SparkSubmit$$anon$2:87 - Failed to load .
java.lang.ClassNotFoundException: 
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:238)
    at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:810)
    at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
    at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我做错了什么

注:

  • 我知道,使用Spark 2.4,我可以拥有一个没有主机的集群,并直接提交给k8s,但我现在想用主机来完成
  • 我使用Spark 2.4
  • 我使用Kubernetes 1.14

要使其正常工作,请使用分发jar的客户端模式(
--deploy mode client
)或在容器映像中指定jar文件的路径。因此,与其使用

/examples/jars/spark-examples_2.11-2.4.0.jar
, 使用类似于:
/opt/spark/examples/jars/spark-examples_2.11-2.4.0.jar
(取决于您使用的图像)


还要检查我的spark操作符中的K8s::)

我启动了一个没有K8s的本地spark群集,并在主选项设置为“---master”的情况下执行了相同的spark Submitspark://127.0.1.1:7077 ` . 在本例中,一切正常,因此看起来不像类路径问题。(或者我遗漏了什么?)!我太专注于K8S部分了,以至于我忘记了问题可能来自Spark:)我仍然有一个小问题tho。当我使用
--master提交时spark://spark-kubernetes
,我得到一个
无效的主URL
。submit似乎只接受最后带有端口的URL。如何解决这个问题?请检查
spark操作符中的gif
repo。在这里,我创建了NodePort服务来公开spark master,希望它也能为您工作。
2019-04-04 08:52:36 WARN  SparkSubmit$$anon$2:87 - Failed to load .
java.lang.ClassNotFoundException: 
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:238)
    at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:810)
    at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
    at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)