使用hadoop设置官方文档中提供的基本配置,我可以运行hadoop集群并提交mapreduce作业。
问题在于每当我停止所有守护进程并重新格式化namenode时,当我随后启动所有守护进程时,datanode都无法启动。
我一直在寻找解决方案,看来这是因为格式化只会格式化namenode,并且需要擦除datanode的磁盘空间。
我该怎么做?我需要对配置文件进行哪些更改?进行这些更改后,如何再次格式化namenode时删除正确的文件?
答案 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/
位置创建。