如何在 minikube 创建的本地 kubernetes 上触发提交作业以触发集群
how to spark-submit job to spark cluster on local kubernetes created by minikube
我正在阅读 blog and tried to run the codes。
$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 作业:
spark-2.1.1-bin-hadoop2.7/bin$ ./spark-submit --master spark://<spark-master>:7077 /home/me/workspace/myproj/myproj.jar
如何知道spark-master的IP?我只是按照上面的步骤做的,没找到相关教程如何know/set spark-master IP。
谁能解释一下?谢谢
更新
我尝试了以下ips,但是失败了。
$ 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(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)
kubectl get po -o wide
将显示 pod ip 地址,您需要使用 Nodeport 公开,之后您可以使用 minikueip:service 端口连接到 master。
最新的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.As现在的spark 2.3.0只支持集群部署方式
2.application jar 必须位于 HDFS 或 docker-image 或任何可通过 http 访问的远程位置。在上面的命令中,local 关键字表示本地到 docker 容器。
3.The master 中传递的ip 和端口在
中找到
$ kubectl cluster-info
一旦看到上述命令的触发器,您就可以在 kubernetes 仪表板上看到 pod 和服务已创建。
我正在阅读 blog and tried to run the codes。
$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 作业:
spark-2.1.1-bin-hadoop2.7/bin$ ./spark-submit --master spark://<spark-master>:7077 /home/me/workspace/myproj/myproj.jar
如何知道spark-master的IP?我只是按照上面的步骤做的,没找到相关教程如何know/set spark-master IP。
谁能解释一下?谢谢
更新
我尝试了以下ips,但是失败了。
$ 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(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)
kubectl get po -o wide
将显示 pod ip 地址,您需要使用 Nodeport 公开,之后您可以使用 minikueip:service 端口连接到 master。
最新的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.As现在的spark 2.3.0只支持集群部署方式
2.application jar 必须位于 HDFS 或 docker-image 或任何可通过 http 访问的远程位置。在上面的命令中,local 关键字表示本地到 docker 容器。
3.The master 中传递的ip 和端口在
中找到$ kubectl cluster-info
一旦看到上述命令的触发器,您就可以在 kubernetes 仪表板上看到 pod 和服务已创建。