我正在尝试在完全分布式模式下配置Hadoop,其中1个主服务器和1个从服务器作为不同的节点。我附上了一个截图,显示了我的主节点和从节点的状态。
在硕士中: ubuntu @ hadoop-master:/ usr / local / hadoop / etc / hadoop $ $ HADOOP_HOME / bin / hdfs dfsadmin -refreshNodes
refreshNodes:本地异常失败:com.google.protobuf.InvalidProtocolBufferException:协议消息标记的线路类型无效。主机详细信息:本地主机为:“hadoop-master / 127.0.0.1”;目的地主机是:“hadoop-master”:8020;
这是我尝试运行refresh nodes命令时遇到的错误。谁能告诉我我错过了什么或我做了什么错误?
2016-04-26 03:29:17,090 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem:为待机状态启动停止服务 2016-04-26 03:29:17,095 INFO org.mortbay.log:已停止HttpServer2 $SelectChannelConnectorWithSafeStartup@0.0.0.0:50070 2016-04-26 03:29:17,095 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl:停止NameNode指标系统... 2016-04-26 03:29:17,095 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl:NameNode指标系统已停止。 2016-04-26 03:29:17,096 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl:NameNode metrics系统关闭完成。 2016-04-26 03:29:17,097 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode:无法启动namenode。 java.net.BindException:绑定到[hadoop-master:8020]的问题java.net.BindException:地址已在使用中;有关详细信息,请参阅:http://wiki.apache.org/hadoop/BindException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792) 在org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:721) 在org.apache.hadoop.ipc.Server.bind(Server.java:425) 在org.apache.hadoop.ipc.Server $ Listener。(Server.java:574) 在org.apache.hadoop.ipc.Server。(Server.java:2215) 在org.apache.hadoop.ipc.RPC $ Server。(RPC.java:938) 在org.apache.hadoop.ipc.ProtobufRpcEngine $ Server。(ProtobufRpcEngine.java:534) 在org.apache.hadoop.ipc.ProtobufRpcEngine.getServer(ProtobufRpcEngine.java:509) 在org.apache.hadoop.ipc.RPC $ Builder.build(RPC.java:783) 在org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer。(NameNodeRpcServer.java:344) at org.apache.hadoop.hdfs.server.namenode.NameNode.createRpcServer(NameNode.java:673) 在org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:646) 在org.apache.hadoop.hdfs.server.namenode.NameNode。(NameNode.java:811) 在org.apache.hadoop.hdfs.server.namenode.NameNode。(NameNode.java:795) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1488) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1554) 引起:java.net.BindException:地址已在使用中 在sun.nio.ch.Net.bind0(原生方法) 在sun.nio.ch.Net.bind(Net.java:463) 在sun.nio.ch.Net.bind(Net.java:455) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) 在org.apache.hadoop.ipc.Server.bind(Server.java:408) ......还有13个 2016-04-26 03:29:17,103 INFO org.apache.hadoop.util.ExitUtil:退出状态1 2016-04-26 03:29:17,109 INFO org.apache.hadoop.hdfs.server.namenode.NameNode:SHUTDOWN_MSG: / ******************* *********** SHUTDOWN_MSG:在hadoop-master / 127.0.0.1上关闭NameNode ************************************************** ********** / 的ubuntu @ Hadoop的主:在/ usr /本地/ hadoop的$
答案 0 :(得分:0)
需要格式化DFS。只需发出以下命令;
hadoop namenode -format
或者
hdfs namenode -format
答案 1 :(得分:0)
检查core-site.xml中的namenode地址。更改为50070或9000并尝试
namenode Web UI的默认地址为http://localhost:50070/。您可以在浏览器中打开此地址并查看名称节点信息。
namenode服务器的默认地址是hdfs:// localhost:8020 /。您可以通过HDFS api连接到它以访问HDFS。这是真实的服务地址。
http://blog.cloudera.com/blog/2009/08/hadoop-default-ports-quick-reference/
答案 2 :(得分:0)
尝试格式化Namenode。 $] hadoop namenode -format
答案 3 :(得分:0)
您的错误日志清楚地表明它无法绑定默认端口。
java.net.BindException: Problem binding to [hadoop-master:8020] java.net.BindException: Address already in use; For more details see: http://wiki.apache.org/hadoop/BindException
您需要将默认端口更改为某个免费的端口。
以下是hdfs-default.xml和here中提供的端口列表。