今天中午在hdfs-site.xml文件中添加了一个端口50010,然后重新启动hadoop,之后发现namenode正常启动,但是datanode启动不了。在datanode节点查看日志报错信息如下:
java.net.BindException: Problem binding to [hbase1:50010] 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:791)
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:720)
at org.apache.hadoop.ipc.Server.bind(Server.java:424)
at org.apache.hadoop.ipc.Server.bind(Server.java:396)
at org.apache.hadoop.hdfs.net.TcpPeerServer.(TcpPeerServer.java:113)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initDataXceiver(DataNode.java:875)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1088)
at org.apache.hadoop.hdfs.server.datanode.DataNode.(DataNode.java:418)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2332)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2219)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2266)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2442)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2466)
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:407)
报java.net.BindException: Problem binding to [hbase1:50010] ,Cannot assign requested address。原来是hbase1:50010不能直接访问。去hdfs-site.xml中查看我设置的50010端口信息:
dfs.datanode.address
hbase1:50010
原来是设置错误了。50010是hadoop中datanode数据交互端口,而hbase1是master(即namenode节点)映射ip,所以会报无法分配请求地址。
将配置文件中hbase1改为0.0.0.0即可。改后的文件内容信息如下:
dfs.datanode.address
0.0.0.0:50010
改完之后,重启下hadoop。OK,问题解决!
配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知道这些配置文件有哪些配置可以生效,上网找的配置可能因为各个hadoop版本不同,导致无法生效。浏览更多的配置,有两个方法:
1.选择相应版本的hadoop,下载解压后,搜索*.xml,找到core-default.xml,hdfs-default.xml,mapred-default.xml,这些就是默认配置,可以参考这些配置的说明和key,配置hadoop集群。
2.浏览apache官网,三个配置文件链接如下:http://hadoop.apache.org/common/docs/r0.20.2/core-default.html
http://hadoop.apache.org/common/docs/r0.20.2/hdfs-default.html
http://hadoop.apache.org/common/docs/r0.20.0/mapred-default.html
这里是浏览hadoop当前版本号的默认配置文件,其他版本号,要另外去官网找。
其中第一个方法找到默认的配置是最好的,因为每个属性都有说明,可以直接使用。
另外,core-site.xml是全局配置,hdfs-site.xml和mapred-site.xml分别是hdfs和mapred的局部配置。
基囖囖 767696856