У меня есть кластер k8s на openstack.Я использовал диаграмму руля https://github.com/eddieesquivel/kubernetes-spark/tree/master/chart, чтобы запустить искровой кластер.Я сделал некоторые изменения, например, я использовал NodePort
вместо LoadBalancer
для веб-интерфейса, потому что я не знаю, как настроить LoadBalancer
на openstack и k8s.Я использовал образ докера (2.3.1-hadoop-3.0) из https://hub.docker.com/r/gettyimages/spark/tags.
Я бегу kubectl port-forward <spark master pod name> 8080:8080
и видел всех 3 рабочих на 127.0.0.1:8080.
Я бегу kubectl exec -it <spark master pod name> -- bash
и запустите ./bin/spark-submit --master spark://myspark-master:7077 --deploy-mode cluster --name spark-pi --class org.apache.spark.examples.SparkPi /usr/spark-2.3.1/examples/jars/spark-examples_2.11-2.3.1.jar
, но из файла журнала на одном работнике я получил следующую ошибку:
Spark Executor Command: "/usr/jdk1.8.0_171/bin/java" "-cp" "/usr/spark-2.3.1/conf/:/usr/spark-2.3.1/jars/*:/usr/hadoop-3.0.0/etc/hadoop/:/usr/hadoop-3.0.0/etc/hadoop/*:/usr/hadoop-3.0.0/share/hadoop/common/lib/*:/usr/hadoop-3.0.0/share/hadoop/common/*:/usr/hadoop-3.0.0/share/hadoop/hdfs/*:/usr/hadoop-3.0.0/share/hadoop/hdfs/lib/*:/usr/hadoop-3.0.0/share/hadoop/yarn/lib/*:/usr/hadoop-3.0.0/share/hadoop/yarn/*:/usr/hadoop-3.0.0/share/hadoop/mapreduce/lib/*:/usr/hadoop-3.0.0/share/hadoop/mapreduce/*:/usr/hadoop-3.0.0/share/hadoop/tools/lib/*" "-Xmx1024M" "-Dspark.driver.port=45708" "-Dspark.rpc.askTimeout=10s" "org.apache.spark.executor.CoarseGrainedExecutorBackend" "--driver-url" "spark://CoarseGrainedScheduler@myspark-worker-d95949b47-szscm:45708" "--executor-id" "48" "--hostname" "10.233.88.5" "--cores" "2" "--app-id" "app-20181231154056-0000" "--worker-url" "spark://Worker@10.233.88.5:42919"
========================================
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1980)
at org.apache.spark.deploy.SparkHadoopUtil.runAsSparkUser(SparkHadoopUtil.scala:64)
at org.apache.spark.executor.CoarseGrainedExecutorBackend$.run(CoarseGrainedExecutorBackend.scala:188)
at org.apache.spark.executor.CoarseGrainedExecutorBackend$.main(CoarseGrainedExecutorBackend.scala:293)
at org.apache.spark.executor.CoarseGrainedExecutorBackend.main(CoarseGrainedExecutorBackend.scala)
Caused by: org.apache.spark.SparkException: Exception thrown in awaitResult:
at org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:205)
at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:75)
at org.apache.spark.rpc.RpcEnv.setupEndpointRefByURI(RpcEnv.scala:101)
at org.apache.spark.executor.CoarseGrainedExecutorBackend$$anonfun$run$1.apply$mcV$sp(CoarseGrainedExecutorBackend.scala:201)
at org.apache.spark.deploy.SparkHadoopUtil$$anon$2.run(SparkHadoopUtil.scala:65)
at org.apache.spark.deploy.SparkHadoopUtil$$anon$2.run(SparkHadoopUtil.scala:64)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1962)
... 4 more
Caused by: java.io.IOException: Failed to connect to myspark-worker-d95949b47-szscm:45708
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:245)
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:187)
at org.apache.spark.rpc.netty.NettyRpcEnv.createClient(NettyRpcEnv.scala:198)
at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:194)
at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:190)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.UnknownHostException: myspark-worker-d95949b47-szscm
Кажется, что работники и мастер не доступны друг другу по имени хоста или имени модуля.но из вышеприведенной ошибки spark пытается подключиться к works / master по именам модулей или хостов вместо ips.Как исправить файлы рулевой диаграммы?какие-либо другие решения?
Кстати, я пытался добавить все имена хостов и их ips к /etc/hosts
на каждом модуле вручную, что пока не является предпочтительным.
Спасибо
ОБНОВЛЕНИЕ
из приведенной ниже команды Spark Executor: Команда Spark Executor: "/usr/jdk1.8.0_171/bin/java" "-Xmx1024M" "-Dspark.driver.port=45708" "-Dspark.rpc.askTimeout=10s" "org.apache.spark.executor.CoarseGrainedExecutorBackend" "--driver-url" "spark://CoarseGrainedScheduler@myspark-worker-d95949b47-szscm:45708" "--executor-id" "1" "--hostname" "10.233.86.5" "--cores" "2" "--app-id" "app-20181231154056-0000" "--worker-url" "spark://Worker@10.233.86.5:44798"
, myspark-worker-d95949b47-szscm
используется в --driver-url
, , которая не может быть разрешена .Как это исправить?