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

时间:2014-09-18 21:01:24

标签: hadoop

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

问题在于每当我停止所有守护进程并重新格式化namenode时,当我随后启动所有守护进程时,datanode都无法启动。

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

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

1 个答案:

答案 0 :(得分: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中创建,所以你需要删除这个目录。

摘要:在格式化系统之前,必须删除名称节点和数据节点目录。默认情况下,它会在/tmp/位置创建。