在hadoop集群中重新格式化namenode后重新启动datanode

Posted

技术标签:

【中文标题】在hadoop集群中重新格式化namenode后重新启动datanode【英文标题】:Restarting datanodes after reformating namenode in a hadoop cluster 【发布时间】:2014-09-18 21:01:24 【问题描述】:

使用 hadoop setup 官方文档中提供的基本配置,我可以运行一个 hadoop 集群并提交 mapreduce 作业。

问题是每当我停止所有守护进程并重新格式化 namenode 时,当我随后启动所有守护进程时,datanode 不会启动。

我一直在寻找解决方案,似乎是因为格式化只格式化 namenode,并且需要擦除 datanode 的磁盘空间。

我该怎么做?我需要对我的配置文件进行哪些更改?进行这些更改后,如何在再次格式化 namenode 时删除正确的文件?

【问题讨论】:

在通过 rm -rf /tmp/* 从 tmp 中删除所有内容后,您是否尝试格式化 namenode(如果未在配置文件中手动定义 tmp) 【参考方案1】:

特别是如果您提供了以下 2 个参数的配置,可以在 hdfs-site.xml 中定义

dfs.name.dir:确定 DFS 名称节点应在本地文件系统的哪个位置存储名称 table(fsimage)。如果这是一个以逗号分隔的目录列表,则名称表将复制到所有目录中,以实现冗余。

dfs.data.dir:确定 DFS 数据节点应在本地文件系统上存储其块的位置。如果这是一个逗号分隔的目录列表,那么数据将存储在所有命名的目录中,通常在不同的设备上。不存在的目录将被忽略

如果您已经为上述 2 个参数提供了特定的目录位置,那么您还需要在格式化 namenode 之前删除这些目录。

如果您没有提供上述 2 参数,则默认情况下它会在以下参数下创建:

hadoop.tmp.dir可以在core-site.xml中配置

如果你已经指定了这个参数,那么你需要在格式化 namenode 之前删除那个目录。

如果你没有定义,默认情况下它会在/tmp/hadoop-$username(hadoop) user创建,所以你需要删除这个目录。

总结:在格式化系统之前,必须先删除name node和data node目录。默认情况下,它在/tmp/ 位置创建。

【讨论】:

以上是关于在hadoop集群中重新格式化namenode后重新启动datanode的主要内容,如果未能解决你的问题,请参考以下文章

hadoop集群启动master节点jps后没有namenode解决方案

如何在ubuntu中将hadoop的hdfs进行格式化?我用hdfs namenode -format命令提示没有hdfs该命令。

格式化hdfs后,hadoop集群启动hdfs,namenode启动成功,datanode未启动

hadoop之为什么不能一直格式化namenode

Hadoop 新建集群namenode format

hadoop用put上传文件时报错