在完成单机器伪分布式的配置后,开始尝试配置完全分布式。一开始就遇见这个问题,slave机namenode日志如下:
2011-08-29 10:09:43,692 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.net.BindException: Problem binding to linux0/192.168.2.159:9000 : Cannot assign requested address
at org.apache.hadoop.ipc.Server.bind(Server.java:190)
at org.apache.hadoop.ipc.Server$Listener.<init>(Server.java:253)
at org.apache.hadoop.ipc.Server.<init>(Server.java:1026)
at org.apache.hadoop.ipc.RPC$Server.<init>(RPC.java:488)
at org.apache.hadoop.ipc.RPC.getServer(RPC.java:450)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:191)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:279)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:956)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:965)
Caused by: 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.apache.hadoop.ipc.Server.bind(Server.java:188)
... 8 more
网上解决方法有下:
问题解决了 在看了slave上看了日志 就是连不到master的端口 而master自己是可以连到端口的
然后在master上启动mapred.sh后 发现jobtracker端口只监听本机
conf中core-site.xml和mapred-site.xml 都有端口的配置
不啰嗦了
最后的解决方法就是 去hosts文件中 把Ip映射去掉
在两个配置文件里 都用Ip地址
master和slave中也都用ip地址
然后 就跑起来了!
后来发现出问题是自己启动方式有问题,启动master的start-all.sh后,又启动slave上的脚本了。(纯属概念没理解清楚,实际上启动前者时后者同时已经被启动了),吼吼