2015-02-07 121 views
1

嗨,我正在学习hadoop,我有一个简单的愚蠢问题:在我关闭HDFS(通过调用hadoop_home/sbin/stop-dfs.sh)后,HDFS上的数据丢失了还是可以恢复?如果你停止HDFS关闭hadoop HDFS后数据丢失了?

回答

7

的数据不会丢失,只要你NameNode和DataNode会的数据存储在持久位置使用的属性所指定:

  • dfs.namenode.name.dir - >确定,其中在本地文件系统的DFS名称节点应该存储名称表(fsimage)。如果这是一个以逗号分隔的目录列表,则名称表将被复制到所有目录中,以实现冗余。默认值:file://${hadoop.tmp.dir}/dfs/name
  • dfs.datanode.data.dir - >确定本地文件系统上DFS数据节点应该存储其块的位置。如果这是以逗号分隔的目录列表,则数据将存储在所有已命名的目录中,通常位于不同的设备上。不存在的目录被忽略。默认值:file://${hadoop.tmp.dir}/dfs/data

正如你可以看到,这两个属性的默认值指向${hadoop.tmp.dir}默认为/tmp。您可能已经知道基于Unix的系统中的/tmp中的数据在重新引导时被清除。

因此,如果您要指定除/tmp之外的dir位置,则重启时的Hadoop HDFS守护程序将能够读回数据,因此即使在群集重新启动时也不会丢失数据。

0

请确定你是不是删除存储在HDFS数据的元数据,这可以简单地实现,如果你保持dfs.namenode.name.dirdfs.datanode.data.dir untouced,是指不删除路径存在于目前在hdfs-site.xml文件中的这些标签。