嗨我正在学习hadoop,我有一个简单的愚蠢问题:关闭HDFS后(通过调用hadoop_home / sbin / stop-dfs.sh),HDFS上的数据丢失了还是可以取回?< / p>
答案 0 :(得分:10)
如果停止HDFS,数据不会丢失,前提是将NameNode和DataNode的数据存储在使用属性指定的持久位置中:
dfs.namenode.name.dir
- &gt;确定DFS名称节点应存储名称表(fsimage)的本地文件系统的位置。如果这是逗号分隔的目录列表,那么名称表将在所有目录中复制,以实现冗余。默认值:file://${hadoop.tmp.dir}/dfs/name
dfs.datanode.data.dir
- &gt;确定DFS数据节点应在何处存储其块的本地文件系统。如果这是逗号分隔的目录列表,则数据将存储在所有命名目录中,通常位于不同设备上。不存在的目录将被忽略。默认值:file://${hadoop.tmp.dir}/dfs/data
如您所见,两个属性的默认值都指向${hadoop.tmp.dir}
,默认情况下为/tmp
。您可能已经知道基于Unix的系统中的/tmp
中的数据在重启时已被清除。
因此,如果你要指定除/tmp
以外的dir位置,那么重启后的Hadoop HDFS守护进程将能够回读数据,因此即使在群集重启时也不会丢失数据。
答案 1 :(得分:0)
请确保您没有删除存储在HDFS中的数据的元数据,如果您保持dfs.namenode.name.dir
和dfs.datanode.data.dir
不受影响,则可以轻松实现,这意味着不删除存在于这些标签中的路径在hdfs-site.xml
文件中。