ashic 发表于 2015-7-26 13:48:17

HDFS snapshot占用空间吗

我put一个1g的文件,此时查看dfs used,为DFS Used: 1082564664 (1.01 GB)
创建一个快照,DFS Used: 1082564664 (1.01 GB)

删除这个1g的文件,回收站也删除,DFS Used: 1082564664 (1.01 GB),还是1.01G

把快照的文件拷贝回去
hadoop fs -cp /snap/.snapshot/s3/bigfile /snap/
此时DFS Used: 1082564664 (2.02 GB)

然后我删除快照后
DFS Used: 1082564664 (1.01 GB)

这个快照到底占不占用空间??
文档中是这样的说Blocks in datanodes are not copied: the snapshot files record the block list and the file size. There is no data copying.
只记录block list和file size,没有data copy
那么为什么还会占了1.01G?

因为最近领导让看hadoop,但是公司没有人会,领导又让看看怎么备份hdfs,防止用户误操作,或者不完全恢复啥的来还原,一般怎么备份呢?

hyj 发表于 2015-7-26 15:05:26

数据全部备份,不太可能。应该是位置备份。

ashic 发表于 2015-7-26 15:15:23

hyj 发表于 2015-7-26 15:05
数据全部备份,不太可能。应该是位置备份。

您好,这个snapshot实际占用空间吗?
因为我们给客户装hadoop,其实根本用不着,就是忽悠钱,您懂得。数据根本不大
领导说,得备份,防止误操作,或者类似于oracle不完全恢复
有什么方法吗?

ashic 发表于 2015-7-27 09:00:21

防沉补丁001

arsenduan 发表于 2015-7-27 11:34:08

ashic 发表于 2015-7-27 09:00
防沉补丁001

快照暂空间的,但是并不是datanode数据备份,假如一个集群,如果全部备份的,可能还需要另外一个集群,这样就相当麻烦了,而且成本极高。所以这里的快照,纪录了block的列表和文件的大小,但是没有数据的复制。
并且暂用空间的

ashic 发表于 2015-7-27 12:17:22

arsenduan 发表于 2015-7-27 11:34
快照暂空间的,但是并不是datanode数据备份,假如一个集群,如果全部备份的,可能还需要另外一个集群,这 ...

还是不太理解

我put一个1g的文件,此时查看dfs used,为DFS Used: 1082564664 (1.01 GB)
创建一个快照,DFS Used: 1082564664 (1.01 GB)
这个时候快照并没有占空间,DFS USED还是1.01


删除这个文件,回收站也删除,DFS USED还是1.01,这时候看起来是占空间了


是否是这样?当“被快照”的内容没有发生改变时,快照不占用空间,只记录block list和file size,没有data copy
当“被快照”的内容发生变化是,为了预留将快照应用回来的控件,hdfs会划出相应大小的控件,以备用户想要将快照cp回去?

arsenduan 发表于 2015-7-27 15:13:29

ashic 发表于 2015-7-27 12:17
还是不太理解

我put一个1g的文件,此时查看dfs used,为DFS Used: 1082564664 (1.01 GB)


快照的作用只是防止误操作,肯定是存储了一定的信息。如果一旦创建了快照,那么在后面操作的过程中,就会和快照产生关联,而不只是和namenode有关系了。

ashic 发表于 2015-7-27 15:20:10

arsenduan 发表于 2015-7-27 15:13
快照的作用只是防止误操作,肯定是存储了一定的信息。如果一旦创建了快照,那么在后面操作的过程中,就会 ...

好吧,谢谢您,不过感觉还是一知半解,可能我语文不好

yuwenge 发表于 2015-7-27 15:32:35

楼主参考这个,看看是否有帮助
HDFS Snapshot原理
http://www.aboutyun.com/thread-14495-1-1.html



ashic 发表于 2015-7-27 16:53:18

yuwenge 发表于 2015-7-27 15:32
楼主参考这个,看看是否有帮助
HDFS Snapshot原理
http://www.aboutyun.com/thread-14495-1-1.html


牛逼,您这篇文章我看了一下就清楚了
其实就是这句话:
实现上是通过在每个目标节点下面创建snapshot节点,后续任何子节点的变化都会同步记录到snapshot上。例如删除子节点下面的文件,并不是直接将文件元信息以及数据删除,而是将他们移动到snapshot下面。这样后续还能够恢复回来。

所以才会出现


我put一个1g的文件,此时查看dfs used,为DFS Used: 1082564664 (1.01 GB)
创建一个快照,DFS Used: 1082564664 (1.01 GB)-----------此时由于没有删除源文件,所谓只记录了一些信息,所以DFS USED没有增加
这个时候快照并没有占空间,DFS USED还是1.01


删除这个文件,回收站也删除,DFS USED还是1.01,这时候看起来是占空间了   ------这是后就是按照您的文章说的“并不是直接将文件元信息以及数据删除,而是将他们移动到snapshot下面”


所以DFS USED才会仍然是1.01GB


感谢!回去整理篇博客去
页: [1]
查看完整版本: HDFS snapshot占用空间吗