HDFS中的名称空间ID不一致问题 分享

当重新format namenode之后,会在namenode结点生成新的namenode namespaceID,如果这时启动HDFS集群,在datanode结点会出现如下的错误提示:datanode namespaceID与namenode namespaceID不一致

结点test13
2009-10-13 18:41:33,117 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = test13/192.168.168.113
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 0.20.0
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.20 -r 763504; compiled by 'ndaley' on Thu Apr  9 05:18:40 UTC 2009
************************************************************/
2009-10-13 18:41:37,380 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-root/dfs/data: namenode namespaceID = 347819051; datanode namespaceID = 1195834595
        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:298)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:216)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1283)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1238)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1246)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1368)

2009-10-13 18:41:37,381 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at test13/192.168.168.113
************************************************************/


结点test14
2009-10-13 18:35:45,620 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = test14/192.168.168.114
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 0.20.0
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.20 -r 763504; compiled by 'ndaley' on Thu Apr  9 05:18:40 UTC 2009
************************************************************/
2009-10-13 18:35:49,869 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-root/dfs/data: namenode namespaceID = 347819051; datanode namespaceID = 1195834595
        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:298)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:216)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1283)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1238)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1246)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1368)

2009-10-13 18:35:49,869 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at test14/192.168.168.114

#########################################
查询./src/core/core-default.xml文件中关于临时文件夹的基准目录,然后在操作系统层,删除所有datanode的这个目录
<property>
  <name>hadoop.tmp.dir</name>
  <value>/tmp/hadoop-${user.name}</value>
  <description>A base for other temporary directories.</description>
</property>
在namenode结点重新执行start-dfs.sh即可完成启动。

##########

或者:

########################################

在操作系统级别下,定位到 /tmp/hadoop-claude/dfs/name/current目录下的VERSION文件,和/tmp/hadoop-claude/dfs/data/current目录下的VERSION文件;

然后将两者的ID改成一致后,再重新启动即可!



### HDFS分布式文件系统的搭建教程 #### 1. 准备工作 在搭建HDFS之前,需要确保所有节点的操作系统环境一致,并完成必要的软件安装。具体包括Java JDK的安装以及SSH无密码登录配置。 为了实现无密码SSH连接,在主节点和从节点之间交换公钥并设置权限是非常重要的一步。例如,可以通过以下命令调整`id_rsa.pub`文件的权限: ```bash chmod 644 ~/.ssh/authorized_keys ``` 此操作可以防止因权限问题而导致的SSH失败[^4]。 --- #### 2. 格式化NameNode 在启动Hadoop集群前,必须先格式化HDFS名称空间。这一步骤通过执行如下命令来完成: ```bash hdfs namenode -format ``` 该命令会在指定路径下初始化元数据目录结构,为后续的数据存储做好准备[^2]。 --- #### 3. 启动Hadoop集群 一旦完成了格式化过程,就可以正常启动整个Hadoop集群服务。通常情况下,管理员会运行脚本来依次启动各个组件的服务进程。 --- #### 4. 创建目录与上传文件 当HDFS成功部署之后,用户可以在其上创建所需的目录结构以便于管理同类型的文件资源。利用`hdfs dfs`工具能够轻松地完成这些基本操作。比如要递归地建立多级子目录,则可采用带有参数选项的方式来进行处理: ```bash hdfs dfs -mkdir -p /user/data/input ``` 上述例子展示了如何在一个存在父级的情况下直接构建完整的路径层次[^3]。接着还可以把本地机器上的某个特定文档复制到远程目标位置处去保存起来供以后分析使用: ```bash hdfs dfs -put localfile.txt /user/data/input/ ``` 这样就实现了将名为`localfile.txt`的内容迁移到虚拟磁盘分区内的相应部分之中去了。 --- #### 5. 使用HDFS CLI进行日常维护 对于一些常规性的查询或者删除动作来说,也可以借助类似的语法形式达成目的。比如说列举当前所在层级下的全部条目列表出来查看一下情况的话,那么只需要简单输入下面这一句就可以了: ```bash hdfs dfs -ls / ``` 如果想要移除掉再需要使用的对象实例呢?那就得换成另外一种表达方法啦——即带上对应的标志符一起调用函数接口才行哦!像这样的场景适用于单个项目或者是整组集合都被标记成废弃状态的时候考虑清理出去释放更多可用的空间配额给其他更重要的用途分配上去。 ```bash hdfs dfs -rm -r /path/to/delete ``` 以上就是关于怎样正确实施一套标准版HDFS解决方案过程中涉及到的一些关键技术要点概述说明了[^1]。 --- ### 注意事项 在整个流程当中,请务必确认每台服务器之间的网络连通状况良好;同时也要仔细核对各项配置项是否填写准确无误,以免因为细微差异引起必要的麻烦阻碍项目的顺利推进下去。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值