请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

datanode端口占用错误

老师,我在使用./start-dfs.sh启动伪分布式hdfs的时候,namendoe和secondarynamenode都可以正常启动,但是本机的datanode不能正常启动。我查看了datanode的启动日志,显示端口被占用。

2017-12-29 19:44:47,991 INFO org.apache.hadoop.http.HttpServer2: HttpServer.start() threw a non Bind IOException

java.net.BindException: Port in use: localhost:0

at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:951)

at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:887)

at org.apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer.<init>(DatanodeHttpServer.java:105)

at org.apache.hadoop.hdfs.server.datanode.DataNode.startInfoServer(DataNode.java:785)

at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1138)

at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:451)

at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2406)

at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2293)

at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2340)

at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2517)

at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2541)

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:444)

at sun.nio.ch.Net.bind(Net.java:436)

at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)

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:946)

... 10 more

2017-12-29 19:44:47,994 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Shutdown complete.

2017-12-29 19:44:47,994 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain

java.net.BindException: Port in use: localhost:0

at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:951)

at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:887)

at org.apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer.<init>(DatanodeHttpServer.java:105)

at org.apache.hadoop.hdfs.server.datanode.DataNode.startInfoServer(DataNode.java:785)

at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1138)

at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:451)

at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2406)

at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2293)

at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2340)

at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2517)

at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2541)

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:444)

at sun.nio.ch.Net.bind(Net.java:436)

at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)

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:946)

... 10 more

2017-12-29 19:44:47,995 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1

2017-12-29 19:44:47,997 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: 


所用环境是老师所提供的虚拟机,因为不能识别hadoop000这个主机名,我把slaves文件中的localhost换成了虚拟机的ip。


请问老师有什么解决的方法。

正在回答 回答被采纳积分+3

插入代码

1回答

Michael_PK 2017-12-29 20:12:52

你把hadoop000映射到你自己的IP

0 回复 有任何疑惑可以回复我~
  • 提问者 Chuansssss #1
    我百度了一下怎么做host映射,可是在老师提供的虚拟机上面找不到根目录下面的etc文件夹,老师可以讲一下怎么进行映射么?
    回复 有任何疑惑可以回复我~ 2017-12-29 20:14:05
  • Michael_PK 回复 提问者 Chuansssss #2
    etc是系统/下
    回复 有任何疑惑可以回复我~ 2017-12-29 23:24:29
  • 提问者 Chuansssss 回复 Michael_PK #3
    恩恩 老师 我修改了/etc/hosts的读写权限,然后把里面的hadoop000和localhost都改成了虚拟机现在的ip地址
    192.168.1.104 hadoop000
    192.168.1.104 localhost
    然后通过ssh尝试连接hadoop000和localhost都可以正常。而且在slaves文件中也写了localhost.
    这次报了一个IOException,显示指定目录不能加载。
    
    2017-12-30 09:56:00,940 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to hadoop000/192.168.1.104:8020. Exiting. 
    java.io.IOException: All specified directories are failed to load.
    	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)
    	at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1394)
    	at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1355)
    	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
    	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)
    	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829)
    	at java.lang.Thread.run(Thread.java:745)
    
    不知道这次是不是文件夹的设置有什么问题额,或者需要我重新run一次hdfs系统格式化?
    回复 有任何疑惑可以回复我~ 2017-12-30 10:00:55
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号