Apache spark Kubernestes standalone spark:spark shell在从机上工作,而不是在主机上工作:初始作业未接受任何资源;

Apache spark Kubernestes standalone spark:spark shell在从机上工作,而不是在主机上工作:初始作业未接受任何资源;,apache-spark,kubernetes,Apache Spark,Kubernetes,我正在一个裸金属Kubernetes集群上测试Spark 2.3.1(单机版)。 我有一个集群,它有两个虚拟机,都有8GB的ram和两个内核。 我部署了一个集群,其中有一个主节点和两个从节点。 节点日志似乎正确,工人已正确注册到主节点: kubectl exec spark-master cat /opt/spark/logs/spark-logs 而且,根据GUI,工人似乎已经准备好并能够与主人沟通。 我已打开火花容器上的以下端口: 7077,让工人找到主人 7078,让工人找到主人

我正在一个裸金属Kubernetes集群上测试Spark 2.3.1(单机版)。 我有一个集群,它有两个虚拟机,都有8GB的ram和两个内核。 我部署了一个集群,其中有一个主节点和两个从节点。 节点日志似乎正确,工人已正确注册到主节点:

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

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

我已打开火花容器上的以下端口:

  • 7077,让工人找到主人
  • 7078,让工人找到主人
  • 37421 spark.driver.port,来自spark默认值

然后,我尝试通过使用
sparkshell--master从容器中启动find sparkshell来执行一个基本的spark作业spark://spark-master:7077
与sc.makeRDD(列表(1,2,4,4))。将计算为作业

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

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

在谷歌搜索这个错误消息时,我通过了。我很确定这是一个网络问题,因为作业是从工作节点开始的。虽然在主容器中启动的作业到达了工作者,但工作者似乎无法回复主容器。工人们的日志看起来像

工作程序用于与主机通信的所有端口都在deployment.yml中打开,防火墙被禁用


有人经历过这种情况吗?

我的笔记本电脑上安装了Docker。驱动程序使用Docker NAT启动。因此,工人无法回复司机,因为他们试图到达docker Verthernet ip。禁用docker解决了问题。

你好,Jugo。我遇到了完全相同的问题。我的Kubernetes集群托管在云上,因此我不确定本地docker安装是否是我的问题所在。有什么建议吗?嗨。驾驶员的IP是否来自您当地的Vethernet?从worker/master日志上的日志获取驱动程序的Ip。
kubectl exec spark-worker1 cat /opt/spark/logs/spark-logs