分享

HDFS snapshot占用空间吗

ashic 发表于 2015-7-26 13:48:17 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 9 21755
我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,防止用户误操作,或者不完全恢复啥的来还原,一般怎么备份呢?

已有(9)人评论

跳转到指定楼层
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

快照暂空间的,但是并不是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


感谢!回去整理篇博客去
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条