先查看报错
先输入这两个参数查看启动datanode的报错情况
export HADOOP_ROOT_LOGGER=DEBUG,console
hdfs datanode
下面是我启动datanode报错信息:
INFO http.HttpServer2: HttpServer.start() threw a non Bind IOException
java.net.BindException: Port in use: localhost:0
at org.apache.hadoop.http.HttpServer2.constructBindException(HttpServer2.java:1014)
at org.apache.hadoop.http.HttpServer2.bindForSinglePort(HttpServer2.java:1037)
at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:1094)
at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:951)
at org.apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer.<init>(DatanodeHttpServer.java:143)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startInfoServer(DataNode.java:962)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1370)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:495)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2695)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2598)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2645)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2789)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2813)
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.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)
at org.apache.hadoop.http.HttpServer2.bindListener(HttpServer2.java:1002)
at org.apache.hadoop.http.HttpServer2.bindForSinglePort(HttpServer2.java:1033)
里面主要一个是 "Cannot assign requested address"和"Port in use: localhost:0" ,localhost为0,意思就是你的hosts文件可能没有localhost的ip映射。我赶紧vim /etc/hosts查看了一下hosts文件,果然只有我自己配的几个集群的映射。加上下面的就可以了
127.0.0.1 localhost
如果还报java.lang.IllegalArgumentException: Does not contain a valid host:port authority ,那就是你的host名字不合法。