在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该命令。