我正在学习Spark,并希望运行由两个物理机组成的最简单的集群。我已经完成了所有基本设置,而且看起来还不错。自动启动脚本的输出如下所示:
[username@localhost sbin]$ ./start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /home/username/spark-1.6.0-bin-hadoop2.6/logs/spark-username-org.apache.spark.deploy.master.Master-1-localhost.out
localhost: starting org.apache.spark.deploy.worker.Worker, logging to /home/sername/spark-1.6.0-bin-hadoop2.6/logs/spark-username-org.apache.spark.deploy.worker.Worker-1-localhost.out
[email protected].???.??: starting org.apache.spark.deploy.worker.Worker, logging to /home/username/spark-1.6.0-bin-hadoop2.6/logs/spark-username-org.apache.spark.deploy.worker.Worker-1-localhost.localdomain.out
因此这里没有错误,并且似乎在运行一个Master节点以及两个Worker节点。但是,当我在192.168.???.??:8080处打开WebGUI时,它仅列出一个工作程序-本地工作程序。我的问题类似于此处描述的问题:Spark群集:工作信息未在Web UI上显示,但/ etc / hosts文件中没有任何反应。它包含的全部是:
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
我想念什么?两台机器都在运行Fedora Workstation x86_64。
基本上,问题的根源是主主机名解析为localhost
。在两个控制台输出中都可见:
starting org.apache.spark.deploy.master.Master, logging to
/home/.../spark-username-org.apache.spark.deploy.master.Master-1-localhost.out
最后一部分对应于主机名。您可以在主日志中看到相同的行为:
16/02/17 11:13:54 WARN Utils: Your hostname, localhost resolves to a loopback address: 127.0.0.1; using 192.168.128.224 instead (on interface eno1)
和远程工作者日志:
16/02/17 11:13:58 WARN Worker: Failed to connect to master localhost:7077
java.io.IOException: Failed to connect to localhost/127.0.0.1:7077
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:216)
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:167)
at org.apache.spark.rpc.netty.NettyRpcEnv.createClient(NettyRpcEnv.scala:200)
at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:187)
at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:183)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: localhost/127.0.0.1:7077
这意味着远程工作者尝试访问主服务器,localhost
并且显然失败。即使工作人员能够连接到主服务器,出于相同的原因,我也不会反向操作。
解决此问题的方法:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句