当我动态加入一个hadoop从节点的之后,出现了一个问题:
[root@hadoop current]# hadoop-daemon.sh start datanode

starting datanode, logging to /usr/local/hadoop1.1/libexec/../logs/hadoop-root-datanode-hadoop.out
[root@hadoop ~]# jps
jps命令发现没有datanode启动。所以去它提示的路径下查看了hadoop-root-datanode-hadoop.out文件,能够是空白的。
后来在该路径下发现了/usr/local/hadoop1.1/logs/hadoop-root-datanode-hadoop.log文件

查看日志文件
[root@hadoop current]# vim /usr/local/hadoop1.1/logs/hadoop-root-datanode-hadoop.log

STARTUP_MSG:   version = 1.1.2

STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.1 -r 1440782; compiled by 'hortonfo' on Thu Jan 31 02:03:24 UTC 2013

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

2014-10-31 19:24:28,543 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties

2014-10-31 19:24:28,565 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.

2014-10-31 19:24:28,566 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).

2014-10-31 19:24:28,566 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started

2014-10-31 19:24:28,728 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.

2014-10-31 19:24:29,221 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /usr/local/hadoop/tmp/dfs/data: namenode namespaceID = 942590743;
datanode namespaceID = 463031076


        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)

        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)

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

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

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

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

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

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

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



2014-10-31 19:24:29,229 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:

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

SHUTDOWN_MSG: Shutting down DataNode at hadoop/192.168.0.100

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

读日志文件:
先看到ERROT信息中Incompatible这个单词,意思是“不相容的”。所以我们能够看出是datanode的namespaceID出错了。

所以最后shutDown了。

解决思路:
(1)先去hadoop路径下的配置文件hdfs-site.xml。看看:
[root@hadoop current]# vim /usr/local/hadoop1.1/conf/hdfs-site.xml
.....................................................................................................................................
<?xml version="1.0"?>

<?

xml-stylesheet type="text/xsl" href="configuration.xsl"?>



<!-- Put site-specific property overrides in this file. -->



<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

    <property>

        <name>dfs.permissions</name>

        <value>false</value>

    </property>

    <property>

        <name>dfs.name.dir</name>

        <value>${hadoop.tmp.dir}/dfs/name</value>

        <description>this is a comma-delimited list of directories

          then the name table is replicated in all of the directories,

          for redunancy.

        </description>

    </property>

</configuration>

.....................................................................................................................................
里面并没有有关datanode的配置信息。假设你有类似于以下的内容:
<property>  

                <name>dfs.data.dir</name>  

                <value>/data/hdfs/data</value>

 </property> 
说明你的datanode配置文件不再默认路径,而是你自己设置过的路径下。

(2)进入datanode的 dfs.data.dir 的 current文件夹。改动里面的文件VERSION
因为我是默认的。所以路径是/usr/local/hadoop/tmp/dfs/data/current/VERSION。
这个版本号不同,可能路径也不同,最好自己去找找。
[root@hadoop current]# vim /usr/local/hadoop/tmp/dfs/data/current/VERSION
.....................................................................................................................................
#Thu Oct 30 04:52:01 PDT 2014

namespaceID=463031076

storageID=DS-1787154912-192.168.0.100-50010-1413940826285

cTime=0

storageType=DATA_NODE

layoutVersion=-32
.....................................................................................................................................
看里面的namespaceID=463031076,能够发现。跟hadoop-root-datanode-hadoop.log中的datanode namespaceID = 463031076的一样,这说明他是读取这个文件的,所以我们没有找错。
 
(3)改动这个版本号信息文件VERSION
ID与hadoop-root-datanode-hadoop.log中 namenode namespaceID = 942590743一致

ps:我想大家应该能够想到namenode namespaceID是从哪里来的:
[root@hadoop current]# vim /usr/local/hadoop/tmp/dfs/name/current/VERSION
.....................................................................................................................................
#Fri Oct 31 19:23:44 PDT 2014

namespaceID=942590743

cTime=0

storageType=NAME_NODE

layoutVersion=-32
.....................................................................................................................................
这里的ID是不是与hadoop-root-datanode-hadoop.log中 namenode namespaceID = 942590743一致?

(4)改动完以后,又一次执行datanode
[root@hadoop current]# hadoop-daemon.sh start datanode
[root@hadoop current]# jps
8581 DataNode
看到DataNode,说明已经跑起来了。

datanode启动失败的更多相关文章

  1. namenode和datanode启动失败

    1.namenode启动失败,查看错误原因,是无法格式化,再看日志,根据日志提示,清空对应的目录,即可解决这个问题. 2.datanode启动失败: Can't open /var/run/cloud ...

  2. hadoop datanode启动失败(All directories in dfs.data.dir are invalid)

    由于hadoop节点的磁盘满了,导致节点死掉,今天对其进行扩容.首先,将原节点的数据拷贝到目标节点下,从而避免数据的丢失,但是在执行hadoop_daemon.sh start datanode后没有 ...

  3. hadoop datanode启动失败

    问题导读: 1.Hadoop出现问题时,该如何入手查看问题?2.datanode无法启动,我们该怎么解决?3.如何动态加入DataNode或TaskTracker? 一.问题描述当我多次格式化文件系统 ...

  4. hadoop 之 某一个datanode启动失败(Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to)

    环境 集群7台 master 3台 datanode 4台 每个datanode有12个硬盘 场景 启动集群之后,发现有一台datanode未启动,手动启动,还是未启动.查看日志,发现: Initia ...

  5. taskTracker和jobTracker 启动失败

    2011-01-05 12:44:42,144 ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker becau ...

  6. windows service 1053错误 启动失败

    做项目移植的时候发现一个项目的window service启动失败,最后试出来是启动时间超时 解决办法是给window service设置一个长一点的等待时间,步骤如下: 启动,输入regedit启动 ...

  7. 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案

    将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...

  8. ubuntu升级内核后vmware-player启动失败

    在虚拟机软件中,vmware player是对硬件支持很好的,通过它可以很方便的使用网银.单片机开发等等工作.但是最近ubuntu每次升级内核后,vmware都会启动失败,提示:Before you ...

  9. CentOS 7下MySQL服务启动失败的解决思路

    今天,启动MySQL服务器失败,如下所示: [root@spark01 ~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): Jo ...

随机推荐

  1. leetcode719:直线上的第k近点对

    问题描述 给定数组a[N],可以确定C(N,2)个点对,也就确定了C(N,2)个距离,求这些距离中第k小的距离(k<C(N,2)). 思路 看到第k小.第k大这种问题,首先想到二分法. 把求值问 ...

  2. XP系统下建立WIFI热点让手机、电脑能上网

    http://wenku.baidu.com/view/372c5b1fa300a6c30c229f42.html 这里记录xp系统下建立共享无线网络连接,若是支持手机设备上的话,网络适配器必须是wi ...

  3. Java虚拟机学习 - 对象内存分配与回收 ( 5 )

    对象优先在Eden上分配 大多数情况下,对象优先在新生代Eden区域中分配.当Eden内存区域没有足够的空间进行分配时,虚拟机将触发一次 Minor GC(新生代GC).Minor GC期间虚拟机将E ...

  4. 理解over()函数

    1.1.两个order by的执行时机分析函数(以及与其配合的开窗函数over())是在整个sql查询结束后(sql语句中的order by的执行比较特殊)再进行的操作, 也就是说sql语句中的ord ...

  5. 最短路径 - 弗洛伊德(Floyd)算法

    为了能讲明白弗洛伊德(Floyd)算法的主要思想,我们先来看最简单的案例.图7-7-12的左图是一个简单的3个顶点的连通网图. 我们先定义两个二维数组D[3][3]和P[3][3], D代表顶点与顶点 ...

  6. unity 获得子节点

    transform.FindChild("childName") transform.FindChild("childName/grandChildName") ...

  7. 在ASP.NET MVC5中使用特性路由

    首先在RegisterRoutes时开启特性路由功能: routes.MapMvcAttributeRoutes(); 然后,就可以使用了. [Route("{productId:int}/ ...

  8. Qt多个信号连接到一个槽,在槽中识别信号的发送者方法(实验 可行)

    Qt是通过信号和槽的机制进行事件传递的,当有多个不同类型.或相同类型的物件的发送信号都通过一个槽来处理的时候,需要在槽中识别出这些信号然后做相应的处理. 例如: 在一个界面中有16个按钮(QPushB ...

  9. [svc][op]LVS+keepalived

    lvs是一种负载均衡技术.注意区分负载均衡和高可用的区别. keepalive是lvs的管理工具 ipvsadm也是lvs的管理工具 keepalive借助ipvsadm管理lvs.所以通常说lvs+ ...

  10. springboot获取URL请求参数的多种方式

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...