Kubernetes独立火花:spark-shell适用于奴隶,而非主人:初始工作没有接受任何资源;

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

我正在裸机Kubernetes集群上测试Spark 2.3.1(独立)。我有一个带有两个虚拟机的集群,它们都有8GB内存和2个内核。我已经部署了一个集群,其中包含一个主节点和两个从节点。节点日志似乎是正确的,工作人员正确地注册了主人:

kubectl exec spark-master cat /opt/spark/logs/spark-logs

Master-logs

kubectl exec spark-worker1 cat /opt/spark/logs/spark-logs

Worker-logs

而且,根据GUI,工作人员似乎已准备好并能够与主人沟通。 Spark GUI

我在spark容器上打开了以下端口:

  • 7077,让工人到达主人
  • 7078,让工人到达主人
  • 37421 spark.driver.port,来自spark-default

然后,我试图通过使用spark-shell --master spark://spark-master:7077sc.makeRDD(List(1,2,4,4)).count作为工作,从容器中通过launchind spark-shell执行基本的spark工作。

如果我在从属节点内使用spark-shell,则执行代码并获得结果。但是,如果我从主服务器启动shell,我收到以下错误消息:

WARN TaskSchedulerImpl:初始作业未接受任何资源;检查群集UI以确保工作人员已注册并具有足够的资源

谷歌搜索这个错误信息时,我来自this issue from github。我很确定这是一个网络问题,因为作业从工作节点开始。同时,在主容器内启动的作业到达工作人员,但看起来工作人员无法回复主人。工人的日志看起来像this

在deployment.yml中打开工作者用于与主服务器通信的所有端口,并禁用防火墙。

有没有人已经经历过这种情况?

apache-spark kubernetes
1个回答
0
投票

Docker安装在我的笔记本电脑上。驱动程序首先使用Docker NAT。因此,工作人员无法回答司机,因为他们试图到达码头工人Verthernet ip。禁用docker解决了这个问题。

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