Hadoop datanode节点无法启动

本文记录了一个Hadoop集群中DataNode启动失败的问题及其解决过程。问题表现为在启动所有节点时,其中一个DataNode上的DataNode进程无法启动,而TaskTracker可以正常启动。通过检查配置文件发现,该节点被错误地加入到了排除列表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、问题描述

本人一个namenode节点下面挂在了3个data节点,在namenode  执行:./start-all.sh,其中一个datanode上面,DataNode进程无法启动,但TaskTracker可以启动,其他两个正常。


2、报错日志

2013-12-30 13:25:57,781 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2013-12-30 13:25:57,793 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2013-12-30 13:25:57,794 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2013-12-30 13:25:57,794 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2013-12-30 13:25:57,893 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2013-12-30 13:25:58,296 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Registered FSDatasetStatusMBean
2013-12-30 13:25:58,307 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened data transfer server at 50010
2013-12-30 13:25:58,310 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Balancing bandwith is 1048576 bytes/s
2013-12-30 13:25:58,370 INFO org.mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2013-12-30 13:25:58,452 INFO org.apache.hadoop.http.HttpServer: Added global filtersafety (class=org.apache.hadoop.http.HttpServer$QuotingInputFilter)
2013-12-30 13:25:58,465 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: dfs.webhdfs.enabled = false
2013-12-30 13:25:58,465 INFO org.apache.hadoop.http.HttpServer: Port returned by webServer.getConnectors()[0].getLocalPort() before open() is -1. Opening the listener on 50075
2013-12-30 13:25:58,465 INFO org.apache.hadoop.http.HttpServer: listener.getLocalPort() returned 50075 webServer.getConnectors()[0].getLocalPort() returned 50075
2013-12-30 13:25:58,466 INFO org.apache.hadoop.http.HttpServer: Jetty bound to port 50075
2013-12-30 13:25:58,466 INFO org.mortbay.log: jetty-6.1.26
2013-12-30 13:25:58,794 INFO org.mortbay.log: Started SelectChannelConnector@0.0.0.0:50075
2013-12-30 13:25:58,800 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source jvm registered.
2013-12-30 13:25:58,801 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source DataNode registered.
2013-12-30 13:25:59,069 INFO org.apache.hadoop.ipc.Server: Starting SocketReader
2013-12-30 13:25:59,073 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source RpcDetailedActivityForPort50020 registered.
2013-12-30 13:25:59,073 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source RpcActivityForPort50020 registered.
2013-12-30 13:25:59,075 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: dnRegistration = DatanodeRegistration(slave1.hadoop:50010, storageID=, infoPort=50075, ipcPort=50020)
2013-12-30 13:25:59,189 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: org.apache.hadoop.ipc.RemoteException: java.io.IOException: verifyNodeRegistration: unknown datanode slave1.hadoop:50010
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.verifyNodeRegistration(FSNamesystem.java:4743)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:2538)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.register(NameNode.java:1006)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:578)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1393)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1389)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1136)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1387)

        at org.apache.hadoop.ipc.Client.call(Client.java:1107)
        at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
        at com.sun.proxy.$Proxy5.register(Unknown Source)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.register(DataNode.java:740)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.runDatanodeDaemon(DataNode.java:1549)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1609)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1734)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1751)

2013-12-30 13:25:59,191 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at slave1.hadoop/192.168.18.206

************************************************************/

3、问题解决

经排查发现,之前做节点解除测试,将该节点加入了exclude文件,配置如下:


hdfs-site.xml加入了如下几行配置:

<property>
      <name>dfs.hosts.exclude</name>
      <value>/usr/hadoop/conf/excludes</value>
      <description>Names a file that contains a list of hosts that are not permitted to connect to the namenode.
                   The full pathname of the file must be specified.  If the value is empty, no hosts are excluded.
      </description>
   </property>


excludes文件下面加入了如下配置:

slave1.hadoop


直接将excludes文件清空即可,重启OK!


### 回答1: 如果Hadoop DataNode没有启动,可能是因为以下几种原因: 1. 磁盘空间不足,DataNode无法启动2. DataNode与NameNode之间的网络连接问题。 3. DataNode的配置文件有误。 4. DataNode的进程已经在运行,但是无法正常工作。 5. 其他原因导致DataNode无法启动。 请检查以上原因,并尝试解决问题。 ### 回答2Hadoop datanode启动可能是由于以下原因所导致的。 1. 配置问题:检查Hadoop配置文件中的datanode节点是否正确配置。确保datanode的相关信息包括主机名、端口号等正确无误。 2. 网络问题:确保datanode所在的主机能够与其他Hadoop节点正常通信。可以尝试使用ping命令测试网络连接的可用性。 3. 权限问题:确认datanode的运行用户是否具有适当的权限来启动Hadoop服务。可以尝试使用sudo命令或以管理员身份运行。 4. 日志分析:检查datanode的日志文件,通常存储在Hadoop安装目录下的logs文件夹中。查看日志文件中的错误或异常信息,以了解导致datanode无法启动的具体原因。 解决datanode启动的问题,可以尝试以下方法: 1. 重新启动Hadoop集群:尝试先关闭整个Hadoop集群,然后逐个启动各个节点,确保datanode节点启动之前没有任何问题。 2. 检查硬件和网络连接:确保datanode所在的主机硬件正常,并且网络连接稳定。可以尝试重新启动主机或更换网络连接线缆。 3. 检查防火墙设置:确保防火墙没有阻止datanode与其他Hadoop节点之间的通信。可以暂时关闭防火墙以测试是否是防火墙设置导致的问题。 4. 查找并解决配置错误:仔细检查datanode的配置文件,例如hdfs-site.xml和core-site.xml文件,确保没有任何拼写错误或语法问题。 如果上述方法都无法解决问题,可以尝试在Hadoop社区或相关技术论坛上寻求帮助,提供详细的错误信息和配置文件内容,以便其他用户提供更具体的解决方案。 ### 回答3: Hadoop Datanode没有启动的原因可能有很多种,以下是几种常见的情况和解决方法: 1. 配置错误:查看hadoop配置文件的datanode相关配置,确保文件中的地址和端口号正确。尤其注意fs.defaultFS和dfs.namenode.rpc-address的配置。 2. 资源不足:检查datanode所在的计算机的硬件资源(CPU、内存、存储空间)是否足够支持启动datanode进程。 3. 磁盘空间已满:检查datanode所在的磁盘空间是否已经满了,如果是,需要清理或增加磁盘空间。 4. 权限问题:检查hadoop相关文件和目录的权限,确保datanode进程有足够的权限来读取和写入相关文件。 5. 网络连接问题:确保datanode所在的计算机能够与hadoop集群的其他节点进行正常的网络连接。可以通过ping或telnet测试网络连通性。 6. 日志文件检查:查看datanode的日志文件,通常位于Hadoop安装目录的logs文件夹下,检查日志中是否有任何错误信息,可以根据错误信息进一步定位和解决问题。 以上是几个常见的Hadoop Datanode没有启动的原因和解决方法,希望能对您有所帮助。如果问题仍然存在,请提供更多详细的错误信息以便进一步分析和解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值