Hadoop 名称节点未启动

Posted

技术标签:

【中文标题】Hadoop 名称节点未启动【英文标题】:Hadoop Name node is not getting started 【发布时间】:2016-04-25 20:31:37 【问题描述】:

我正在尝试将 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;

这是我在尝试运行刷新节点命令时遇到的错误。谁能告诉我我错过了什么或我犯了什么错误?

Master & Slave Screenshot

2016-04-26 03:29:17,090 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem:为待机状态启动停止服务 2016-04-26 03:29:17,095 信息 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 度量系统关闭完成。 2016-04-26 03:29:17,097 错误 org.apache.hadoop.hdfs.server.namenode.NameNode:无法启动名称节点。 java.net.BindException:绑定到 [hadoop-master:8020] 的问题 java.net.BindException:地址已在使用中;更多详情见:http://wiki.apache.org/hadoop/BindException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 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) 在 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) 在 org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1488) 在 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) 在 sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) 在 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 信息 org.apache.hadoop.util.ExitUtil:以状态 1 退出 2016-04-26 03:29:17,109 信息 org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: /************************************************* *********** SHUTDOWN_MSG:在 hadoop-master/127.0.0.1 关闭 NameNode ****************************************************** **********/ ubuntu@hadoop-master:/usr/local/hadoop$

【问题讨论】:

【参考方案1】:

DFS 需要格式化。只需发出以下命令;

hadoop 名称节点格式

或者

hdfs 名称节点格式

【讨论】:

我用 stop-dfs 和 start-dfs 都做了几次,但没有任何改善【参考方案2】:

在 core-site.xml 中检查您的名称节点地址。换成 50070 或 9000 试试

namenode web UI 的默认地址是http://localhost:50070/。你可以在浏览器中打开这个地址,查看namenode信息。

namenode服务器的默认地址是hdfs://localhost:8020/。您可以通过 HDFS api 连接到它以访问 HDFS。是真实的服务地址。

http://blog.cloudera.com/blog/2009/08/hadoop-default-ports-quick-reference/

【讨论】:

感谢您的回复。我都试过了,但是namenode还没有开始。如果 Name 节点未启动,则我们无法查看 Web UI 仪式。 尝试清除你的hadoop目录并重新格式化namenode(dfs.namenode.name.dir和dfs.datanode.data.dir在master和slave中)【参考方案3】:

尝试格式化Namenode。 $] hadoop namenode - 格式

【讨论】:

【参考方案4】:

您的错误日志清楚地表明它无法绑定默认端口。

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 中给出的端口列表。

【讨论】:

非常感谢。我的名称节点已启动,我现在可以看到 Web UI。我有一个新问题,活动节点和数据节点的数量显示为 0。但是当我 ssh 进入我的从节点并键入“jps”时,它显示为数据节点进程正在运行。

以上是关于Hadoop 名称节点未启动的主要内容,如果未能解决你的问题,请参考以下文章

名称节点未启动

Hadoop:从节点未启动

名称节点未运行

Hadoop 中的辅助名称节点

Hadoop中的名称节点崩溃

hadoop配置名称节点HA基本流程