阿里云ECS上搭建Hadoop集群环境——启动时报错“java.net.BindException: Cannot assign requested address”问题的解决

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/81255713
本文出自【我是干勾鱼的博客

Ingredient:

在阿里云ECS的Ubuntu环境下部署Hadoop系统,使用两台服务器:

Master,1台 (test7972)
Slave,1台(test25572)

启动时使用:

./sbin/start-all.sh

报错:

java.net.BindException: Problem binding to [test7972:9000] java.net.BindException: Cannot assign requested address; For more details see: http://wiki.apache.org/hadoop/BindException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:824)
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:735)
at org.apache.hadoop.ipc.Server.bind(Server.java:561)
at org.apache.hadoop.ipc.ServerListener.<init>(Server.java:1037)atorg.apache.hadoop.ipc.Server.<init>(Server.java:2738)atorg.apache.hadoop.ipc.RPCListener.<init>(Server.java:1037) at org.apache.hadoop.ipc.Server.<init>(Server.java:2738) at org.apache.hadoop.ipc.RPCServer.(RPC.java:958)
at org.apache.hadoop.ipc.ProtobufRpcEngineServer.<init>(ProtobufRpcEngine.java:420)atorg.apache.hadoop.ipc.ProtobufRpcEngine.getServer(ProtobufRpcEngine.java:341)atorg.apache.hadoop.ipc.RPCServer.<init>(ProtobufRpcEngine.java:420) at org.apache.hadoop.ipc.ProtobufRpcEngine.getServer(ProtobufRpcEngine.java:341) at org.apache.hadoop.ipc.RPCBuilder.build(RPC.java:800)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.(NameNodeRpcServer.java:431)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createRpcServer(NameNode.java:803)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:730)
at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:953)
at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:932)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1673)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1741)
Caused by: java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.apache.hadoop.ipc.Server.bind(Server.java:544)
… 13 more

这里要注意: 这个错误是服务器ip识别问题造成的,在文件:

/etc/hosts

中设置ip与域名的匹配时:

  • 1.在本机上的操作,都要设置成内网ip
  • 2.其它机器上的操作,要设置成外网ip

那么具体的解决办法就是:

  • 1.在Master服务器上,要将自己的ip设置成内网ip,而将另一台Slave服务器的ip设置成外网ip;
  • 2.同样的在Slave服务器上,要将自己的ip设置成内网ip,而将另一台Master服务器的ip设置成外网ip。

这个问题确实有点棘手,之前我也没有想到是运营商服务器自身的网络问题,以后使用公有云搭建Hadoop集群要注意了!一方面要考虑系统间的交互速度,使用内网地址;另一方面还要考虑公有云自身与外界连接,使用外网地址;除此之外公有云运营商的网络规则我们是不清楚的,内网和外网之间有什么限制、规则我们不清楚。这些共同造成了这个问题的出现。

参考:

一台阿里云2台腾讯云服务器搭建Hadoop集群

展开阅读全文

hadoop集群搭建Cannot assign requested address

09-05
问题: 2016-09-05 16:40:03,320 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join java.net.BindException: Problem binding to [master:9000] java.net.BindException: Cannot assign requested address; For more details see: http://wiki.apache.org/hadoop/BindException at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:719) at org.apache.hadoop.ipc.Server.bind(Server.java:419) at org.apache.hadoop.ipc.Server$Listener.<init>(Server.java:561) at org.apache.hadoop.ipc.Server.<init>(Server.java:2166) at org.apache.hadoop.ipc.RPC$Server.<init>(RPC.java:897) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server.<init>(ProtobufRpcEngine.java:505) at org.apache.hadoop.ipc.ProtobufRpcEngine.getServer(ProtobufRpcEngine.java:480) at org.apache.hadoop.ipc.RPC$Builder.build(RPC.java:742) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.<init>(NameNodeRpcServer.java:311) at org.apache.hadoop.hdfs.server.namenode.NameNode.createRpcServer(NameNode.java:614) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:587) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:751) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:735) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473) -------------------------------------------------------------------------------------------------- 采用的是云服务搭建集群,用的是公网地址。 ifconfig后出现: eth0 Link encap:Ethernet HWaddr 52:54:00:C6:39:03 inet addr:10.141.88.213 Bcast:10.141.127.255 Mask:255.255.192.0 但我的hosts是: 127.0.0.1 localhost localhost.localdomain 123.207.161.186 master 123.207.145.16 slave1 123.207.140.169 slave2 如果配置私网地址,主机之间ping不通。
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值