使用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/
位置创建的。