java.net.BindException: Problem binding to [0.0.0.0:50010] java.net.BindException: Address already in use; 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:414)
at org.apache.hadoop.ipc.Server.bind(Server.java:386)
at org.apache.hadoop.hdfs.net.TcpPeerServer.<init>(TcpPeerServer.java:106)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initDataXceiver(DataNode.java:521)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:733)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:278)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1872)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1766)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1806)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1982)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2006)
此异常意味着50010端口被占用;
解决方法:
可以将占用此端口的程序杀掉或是更改hdfs-site.xml中的<name>dfs.datanode.address</name><value>0.0.0.0:50010</value>
杀掉进程释放端口方法:
1、netstat -tln | grep 端口,查看这个端口使用情况;
2、lsof -i:端口,显示是哪个程序占用此端口
3、kill -9 进程的PID,杀掉这个进程,重启节点服务即可。