`

转 HADOOP报错Incompatible namespaceIDs

 
阅读更多

转自:http://blog.csdn.net/wh62592855/article/details/5752199

 

 

今早一来,突然发现使用-put命令往HDFS里传数据传不上去了,抱一大堆错误,然后我使用bin/hadoop dfsadmin -report查看系统状态

admin@adw1:/home/admin/joe.wangh/hadoop-0.19.2>bin/hadoop dfsadmin -report
Configured Capacity: 0 (0 KB)
Present Capacity: 0 (0 KB)
DFS Remaining: 0 (0 KB)
DFS Used: 0 (0 KB)
DFS Used%: ?%

-------------------------------------------------
Datanodes available: 0 (0 total, 0 dead)

 

使用bin/stop-all.sh关闭HADOOP

 

admin@adw1:/home/admin/joe.wangh/hadoop-0.19.2>bin/stop-all.sh
stopping jobtracker
172.16.197.192: stopping tasktracker
172.16.197.193: stopping tasktracker
stopping namenode
172.16.197.193: no datanode to stop
172.16.197.192: no datanode to stop 
172.16.197.191: stopping secondarynamenode

 

哦,看到了吧,发现datanode前面并没有启动起来。去DATANODE上查看一下日志

admin@adw2:/home/admin/joe.wangh/hadoop-0.19.2/logs>vi hadoop-admin-datanode-adw2.hst.ali.dw.alidc.net.log

************************************************************/
2010-07-21 10:12:11,987 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/admin/joe.wangh/hadoop/data/dfs.data.dir: namenode namespaceID = 898136669; datanode namespaceID = 2127444065 
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:233)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:148)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:288)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:206)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1239)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1194)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1202)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1324)
......

 

错误提示namespaceIDs不一致。

 

下面给出两种解决办法,我使用的是第二种。

Workaround 1: Start from scratch

I can testify that the following steps solve this error, but the side effects won't make you happy (me neither). The crude workaround I have found is to:

1.     stop the cluster

2.     delete the data directory on the problematic datanode: the directory is specified by dfs.data.dir in conf/hdfs-site.xml; if you followed this tutorial, the relevant directory is /usr/local/hadoop-datastore/hadoop-hadoop/dfs/data

3.     reformat the namenode (NOTE: all HDFS data is lost during this process!)

4.     restart the cluster

When deleting all the HDFS data and starting from scratch does not sound like a good idea (it might be ok during the initial setup/testing), you might give the second approach a try.

Workaround 2: Updating namespaceID of problematic datanodes

Big thanks to Jared Stehler for the following suggestion. I have not tested it myself yet, but feel free to try it out and send me your feedback. This workaround is "minimally invasive" as you only have to edit one file on the problematic datanodes:

1.     stop the datanode

2.     edit the value of namespaceID in <dfs.data.dir>/current/VERSION to match the value of the current namenode

3.     restart the datanode

If you followed the instructions in my tutorials, the full path of the relevant file is /usr/local/hadoop-datastore/hadoop-hadoop/dfs/data/current/VERSION (background: dfs.data.dir is by default set to ${hadoop.tmp.dir}/dfs/data, and we set hadoop.tmp.dir to /usr/local/hadoop-datastore/hadoop-hadoop).

If you wonder how the contents of VERSION look like, here's one of mine:

#contents of <dfs.data.dir>/current/VERSION

namespaceID=393514426

storageID=DS-1706792599-10.10.10.1-50010-1204306713481

cTime=1215607609074

storageType=DATA_NODE

layoutVersion=-13

 

原因:每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有晴空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下 的所有目录.

分享到:
评论

相关推荐

    CDH集群大数据hadoop报错解决办法及思路整理-绝对干货

    CDH集群大数据hadoop报错解决办法及思路整理,主要解决大数据在运行过程中所遇到的问题,相关解决办法都是实践验证过。

    linux内 spark-hadoop 报错详细提示

    linux内 spark_hadoop 报错详细提示 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、...

    mac hadoop报错native 需要的包

    在Mac系统上使用Hadoop时,可能会遇到一个常见的问题,即“Unable to load native-hadoop library”。这个错误信息表明Hadoop在尝试加载本地库(native library)时失败,通常是由于缺少必要的依赖或配置不当导致的...

    Logstash6整合Hadoop-报错与解决方案.docx

    Logstash6整合Hadoop报错与解决方案 Logstash是 Elastic Stack 中的数据处理引擎,可以从多种数据源中提取数据,并对其进行处理和转换,然后将其输出到多种目标中,例如 Elasticsearch、Kafka、Hadoop 等。在大...

    windows下Hadoop报错null\bin\winutils.exe-附件资源

    windows下Hadoop报错null\bin\winutils.exe-附件资源

    hadoop配置运行错误

    一、hadoop集群在namenode格式化后重启集群会出现Incompatible namespaceIDS错误 问题描述:在hadoop系统中,如果我们对namenode进行格式化(使用bin/hadoop namenode -format命令),然后重启集群,可能会出现...

    Spark/Hadoop开发缺失插件-winutils.exe

    本地开发Spark/Hadoop报错“ERROR Shell: Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.” ...

    hadoop2.4.1的64位redhat的native包,解决hadoop 安装报错

    在Hadoop生态系统中,"hadoop2.4.1的64位redhat的native包"扮演着至关重要的角色,特别是在解决与安装和运行Hadoop相关的特定错误时。Hadoop是一个分布式计算框架,用于处理和存储大量数据。当Hadoop在Red Hat操作...

    hadoop3.0.0-windows-bin.zip

    包含winutils 注意版本 已经成功运行 之后配置环境变量 解决 Hadoop报错:Failed to locate the winutils binary in the hadoop binary path

    解决hadoop本地运行报错

    org.apache.hadoop.io.nativeio.NativeIO.java解决办法 将org放入项目的工程目录下 本地运行MR必备的源码包,本地运行MR必备的源码包,本地运行MR必备的源码包,

    hadoop.dll 文件,解决报错所需文件

    报错:java.lang.Exception: java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 所需文件

    winutil和hadoopdll.zip

    解决window运行hadoop报错Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0的问题

    hadoop-3.1.0-winUtils.rar

    hadoop3.1.0 winUtils 。如果本机操作系统是 Windows,在程序中使用了 Hadoop 相关的东西,比如写入文件到HDFS,则会遇到如下异常:could not locate executable null\bin\winutils.exe ,使用这个包,设置一个 ...

    Hadoop Windows系统安装包 和 winutils的文件

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分析。它最初设计的目标是处理和存储海量数据,尤其适合那些不适合在单台机器上运行的大型数据集。本篇将详细介绍如何在Windows系统中安装Hadoop...

    windows64位hadoop2.7.7版本hadoop.dll

    windows下做hadoop入门,会出现hdfs报错,2.7.7版本兼容 windows下做hadoop入门,会出现hdfs报错,2.7.7版本兼容 windows下做hadoop入门,会出现hdfs报错,2.7.7版本兼容

    hadoop/bin/hadoop.dll

    当用户尝试运行Hadoop的某些部分,如启动HDFS或MapReduce服务时,如果缺少这个DLL文件,系统将会报错,提示找不到所需的依赖项。 描述中提到的“在安装Hadoop环境时会缺少该文件”,这可能是因为用户下载的Hadoop...

    Hadoop Shell命令大全

    Hadoop是一个开源的框架,它允许用户在大型分布式系统中存储和处理数据。它由Apache软件基金会支持,是大数据处理的业界标准解决方案。Hadoop包含多个子项目,其中最核心的两个是Hadoop分布式文件系统(HDFS)和...

    Hadoop2的HA配置一键运行脚本startall

    【标题】"Hadoop2的HA配置一键运行脚本startall"主要涉及到的是在Hadoop分布式文件系统(HDFS)中实现高可用性(High Availability, HA)的配置方法。Hadoop HA允许NameNode(Hadoop的核心组件之一,负责管理文件...

    hadoop2.7.5 在windows下需要的hadoop.dll winutils.exe等文件(bin目录)

    但是,Hadoop的默认发行版并不包含这个文件,因此在Windows上运行Hadoop时可能会报错。 为了解决这个问题,你需要从可靠的来源下载已经编译好的`winutils.exe`以及相关的`.dll`文件。这些文件包括`hadoop.dll`和`...

Global site tag (gtag.js) - Google Analytics