为什么我不能在Kubernetes(K8s)集群上运行sparkPi示例?

问题描述 投票:1回答:1

到目前为止,我已经在VMWare Workstation内的VM上启动并运行了一个K8s集群。我正在尝试使用here中的官方文档在本地部署Spark应用程序。但是,我也觉得this文章更清楚了。

现在,我的安装程序以前是在嵌套的VM内运行的,基本上我的机器是在Win10上运行的,我有一个Ubuntu VM,其中有3个为群集运行的VM(我知道这不是最好的主意)。

[按照下面的文章尝试运行安装程序时,我首先在群集中创建了一个名为spark的服务帐户,然后创建了一个名为clusterrolebindingspark-role,并以edit作为群集角色并为其进行了分配spark服务帐户,以便Spark驱动程序窗格具有足够的权限。

然后我尝试使用此命令行运行示例SparkPi作业:

bin/spark-submit \
  --master k8s://https://<k8-cluster-ip>:<k8-cluster-port> \
  --deploy-mode cluster \
  --name spark-pi \
  --class org.apache.spark.examples.SparkPi \
  --conf spark.executor.instances=2 \
  --conf spark.kubernetes.container.image=kmaster:5000/spark:latest \
  --conf spark.kubernetes.container.image.pullPolicy=IfNotPresent \
  --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
  local:///opt/spark/examples/jars/spark-examples_2.11-2.4.5.jar 100

并且它在创建driver-pod后几秒钟内失败,它进入Running状态,大约3秒钟后进入Error状态。

[给出命令kubectl logs spark-pi-driver this是我得到的日志。

第二个Caused by:总是如上所述,即:

  • Caused by: java.net.SocketException: Broken pipe (Write failed)或,
  • Caused by: okhttp3.internal.http2.ConnectionShutdownException

Log #2供参考。

在遇到这种死胡同之后,我尝试给出--deploy-mode client以查看它是否有所作为并获得更多详细的日志。您可以从here读取客户端和群集模式之间的差异。

将作业部署为客户端模式时,它仍然失败,但是,现在我看到每次驱动程序pod(现在不是作为pod运行,而是作为本地计算机上的进程运行)尝试创建执行程序pod ,当最后一个进入终止状态时,它会无限循环地尝试创建一个执行者Pod,并在Pod名称后附加一个计数编号。另外,现在我可以在4040端口上看到Spark UI,但是该工作并没有向前推进,因为它甚至试图创建单个执行程序Pod。

我收到this日志。

对我来说,这很明显可能是资源紧缩?

因此,可以肯定的是,我在主机上删除了嵌套的VM,并设置了2个新的VM,并使用NAT网络连接它们并设置了相同的K8s群集。

但是现在当我尝试做完全相同的事情时,它会失败,并显示相同的错误(Broken Pipe / ShutdownException),但现在它告诉我即使在创建驱动程序-pod]时它也会失败。

This是参考日志。

现在我什至无法获取有关失败原因的日志,因为甚至从未创建过它。

我为此烦恼不已,不知道为什么它失败了。现在,我尝试了很多方法来将它们排除在外,但到目前为止,除了一种方法(完全不同的解决方案)之外,其他任何方法都没有起作用。

我从here尝试了GCP的spark-on-k8-operator

,对我来说它工作。我无法看到Spark UI短暂运行,但是它在Shell窗口中打印Pi值,所以我知道它可以工作。我猜想,即使是这个“ k8s上的spark-operator”也可以“内部”执行相同的操作,但我确实需要能够在本地进行部署,或者至少知道它为什么会失败。

这里的任何帮助将不胜感激(我知道这是一篇很长的文章)。谢谢。

到目前为止,我已经在VMWare Workstation内的VM上启动并运行了一个K8s集群。我正在尝试使用此处的官方文档在本地部署Spark应用程序。但是,我也登陆了...

apache-spark kubernetes rbac kubernetes-pod
1个回答
1
投票

确保您正在部署的kubernetes版本与您正在使用的Spark版本兼容。

© www.soinside.com 2019 - 2024. All rights reserved.