Kubernestes独立的spark:spark-shell在从属服务器上工作,而不在master上工作:初始作业未接受任何资源;

时间:2018-08-29 15:49:01

标签: apache-spark kubernetes

我正在裸机Kubernetes集群上测试Spark 2.3.1(独立)。 我有一个包含两个虚拟机的群集,两个虚拟机都具有8GB的ram和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

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

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

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

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

  

WARN TaskSchedulerImpl:初始作业没有接受任何资源;检查您的集群用户界面,以确保工作人员已注册   并有足够的资源

在搜索该错误消息时,我遇到了this issue from github。我很确定这是一个网络问题,因为该作业始于工作节点。该作业虽然在主容器中启动,但到达了工作人员,但看起来工作人员无法回复主数据。工作人员上的日志看起来像this

worker用于与主服务器进行通信的所有端口都在Deployment.yml中打开,并且防火墙已禁用。

有人遇到过这种情况吗?

1 个答案:

答案 0 :(得分:0)

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