关闭hadoop HDFS后数据丢失?

Data lost after shutting down hadoop HDFS?

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

如果您停止 HDFS,数据不会丢失,前提是您将 NameNode 和 DataNode 的数据存储在使用以下属性指定的持久位置:

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

如您所见,两个属性的默认值都指向 ${hadoop.tmp.dir},默认情况下为 /tmp。您可能已经知道 /tmp 中的数据在基于 Unix 的系统中会在重新启动时被清除。

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

请确保您没有删除存储在 HDFS 中的数据的元数据,如果您保持 dfs.namenode.name.dirdfs.datanode.data.dir 不变,这意味着不删除这些标签中存在的路径,您可以简单地实现这一点出现在您的 hdfs-site.xml 文件中。