首先,我們再配置好hadoop後,利用
./bin/hdfs namenode -format
格式化一下namenode,再
$ ./sbin/start-dfs.sh
$ jps
開啓之後,發現沒有datanode,按照網上的方法,卻發現我的tmp/dfs/data下面沒有任何文件,而tmp/hdfs/name/下面有current,所以很是苦惱。
後來查詢日誌得知logs/下:
vim hadoop-hadoop-datanode-ubuntu.log
大概這樣
INFO org.apache.hadoop.http.HttpServer2: HttpServer.start() threw a non Bind IOException
java.net.BindException: Port in use: 0.0.0.0:50020
at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:998)
at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:935)
at org.apache.hadoop.hdfs.server.namenode.NameNodeHttpServer.start(NameNodeHttpServer.java:171)
at org.apache.hadoop.hdfs.server.namenode.NameNode.startHttpServer(NameNode.java:842)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:693)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:906)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
Caused by: java.net.BindException: Address already in use
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.openListeners(HttpServer2.java:993)
... 8 more
端口重複了。
通過命令
lsof -i:50020
查看進程id,kill掉該進程然後重啓hadoop即可
kill -9 “PID”
這個PID下面的就是對應的進程號。
再關掉
./sbin/stop-all.sh
刪除./tmp/dfs/下的文件,再格式化
hdfs namenode -format
重啓
./sbin/start-dfs.sh
輸入jps,即可有datanode。