0

我正在阅读博客并尝试运行代码

$kubectl get po
NAME                            READY     STATUS    RESTARTS   AGE
spark-master-668325562-w369p    1/1       Running   0          23s
spark-worker-1868749523-xt7hg   1/1       Running   0          23s

现在,spark 集群在 minikube 创建的本地 kubernetes 集群上运行良好。我正在尝试通过以下命令向它提交火花作业:

spark-2.1.1-bin-hadoop2.7/bin$ ./spark-submit --master spark://<spark-master>:7077 /home/me/workspace/myproj/myproj.jar

如何知道 spark-master 的 IP?我只是按照上述步骤进行操作,找不到有关如何知道/设置spark-master IP 的相关教程。

任何人都可以解释一下吗?谢谢

更新

我尝试了以下ip,但失败了。

$ minikube ip
192.168.42.55

$kubectl get svc 
NAME           CLUSTER-IP   EXTERNAL-IP   PORT(S)             AGE
kubernetes     10.0.0.1     <none>        443/TCP             3h
spark-master   10.0.0.175   <none>        8080/TCP,7077/TCP   42m

错误:

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: Can only call getServletHandlers on a running MetricsSystem
    at scala.Predef$.require(Predef.scala:224)
    at org.apache.spark.metrics.MetricsSystem.getServletHandlers(MetricsSystem.scala:91)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:524)
    at NetworkScanCounter$.main(network-scan-counter.scala:68)
    at NetworkScanCounter.main(network-scan-counter.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:743)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
4

2 回答 2

0

kubectl get po -o wide将显示 pod ip 地址,您需要使用 Nodeport 公开,之后您可以使用 minikueip:service 端口访问 master。

于 2017-06-16T01:59:55.023 回答
0

最新的 apache spark 2.3.0 支持 kubernetes 。

$ spark-submit --master k8s://https://127.0.0.1:8443 --name cfe8 --deploy-mode cluster --class com.yyy.Application --conf spark.executor.instances=4 --conf spark.kubernetes.container.image=anantpukale/spark_app:1.2 local://CashFlow-0.0.2-SNAPSHOT-shaded.jar

需要注意的点

1.目前spark 2.3.0仅支持集群部署模式。

2.application jar 必须位于 HDFS 或 docker-image 或任何可通过 http 访问的远程位置。在上面的命令中,local 关键字表示本地到 docker 容器。

3.master传入的ip和port在

$ kubectl cluster-info

一旦看到上述命令的触发器,您就可以看到在 kubernetes 仪表板上创建了 pod 和服务。

参考

于 2018-04-10T07:34:09.563 回答