嗨,我正在学习hadoop,我有一个简单的愚蠢问题:关闭HDFS后(通过调用hadoop_home/sbin/stop-dfs.sh),HDFS上的数据丢失了还是我能把它取回来?
如果停止HDFS,数据不会丢失,前提是将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
.您可能已经知道/tmp
基于Unix的系统中的数据在重启时已被清除.
因此,如果您指定dir位置,/tmp
那么重启后的Hadoop HDFS守护程序将能够读回数据,因此即使在群集重启时也不会丢失数据.