原来在vmworkstation上部署了3台hadoop的分布式环境,运行一切正常。因为资源问题,我把其中一台的vm文件copy到另外一台实体机上,一共copy了3分,又打算部署一个同样的hadoop分布式环境。配置好ssh互相认证授权,机器建可以互相访问。所有配置都没有,除了机器名,相应改掉core-site.xml, mapred-site.xml里面的机器名称。执行start-all.sh,但namenode启动一会就挂了,报如下错误:
- .......
- InterruptedException.java.lang.InterruptedException: sleep
- interrupted2010-05-21 01:02:37,555 INFO
- org.apache.hadoop.hdfs.server.namenode.DecommissionManager:
- Interrupted Monitorjava.lang.InterruptedException: sleep interrupted
- at java.lang.Thread.sleep(Native Method)
- at org.apache.hadoop.hdfs.server.namenode.DecommissionManager$Monitor.run(DecommissionManager.
- java:65)
- at java.lang.Thread.run(Thread.java:619)
- .......
-
- ERROR
- org.apache.hadoop.hdfs.server.namenode.NameNode:
- java.net.BindException:
- Cannot assign requested address
- at sun.nio.ch.Net.bind(Native Method)
- at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:119)
- at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
- at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)
- at org.apache.hadoop.http.HttpServer.start(HttpServer.java:424)
- at org.apache.hadoop.hdfs.server.namenode.NameNode.startHttpServer(NameNode.java:246)
网上找了很多资料,有说hosts里面机器名不对,应该改成domain,或者拿掉localhost这一行,也有说防火墙没关闭等等。但尝试过都还是不行。
最后上一个外国网站发现说是因为dfs.http.address指向的IP有问题,指向了本地IP,而应该是非本地IP。我记得我自己并没有配置这个property,但还是
检查下hdfs-site.xml,发现之前我配置过这个属性,IP指向另一个IP,但我把这个属性用“#” comment掉了,怎么还会生效呢。我拿掉comment,把
IP改成我新配的namenode机器名。
- <property>
- <name>dfs.http.address</name>
- <value>master35:50070</value>
- </property>
原文由站长网http://www.software8.co/wzjs/qtyy/2559.html原创投稿
再重启,好了。搞了我很久的问题,但我还是很奇怪我已经comment掉了,应该不会生效的啊,神了。