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

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

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

我怎样才能做到这一点?我需要对配置文件进行哪些更改?进行这些更改之后,如何在再次格式化namenode时删除正确的文件?

最佳答案

具体来说,如果您提供了以下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/位置创建的。

09-11 02:41
查看更多