我们在Cloudera中有一个集群。我们正在使用HDFS的快照进行备份。最近,我们发现HDFS中使用的空间显著增长。我们怀疑这是因为我们用于备份的快照。
1.当我们尝试查看目录的大小时,会看到以下内容:
hdfs文件系统dfs -du -s -h路径
12.4 T 76.8 T路径
1.当我们试图查看此目录的大小时,我们看到的是完全不同的结果:
硬盘文件系统
12.4 T 37.2吨
我们还尝试查看了快照的大小,大小如下:
hdfs dfs -du -s -h <path>/.snapshot
9.1 T 63.6 T <path>/.snapshot/snap-new
10.9 T 68.0 T <path>/.snapthot/snap-old
12.4 T 37.2 T <path>/.snapshot/snap-of-today
我的问题是,如果我删除所有这些快照(新快照、旧快照、今天快照),我们将看到大小为2?
如果没有,我必须做什么才能开始看到像数字2的大小?
提前感谢!
2条答案
按热度按时间ctzwtxfj1#
在HDFS中无法查看特定快照使用了多少空间。通常,最旧的快照使用的空间最多,但这取决于您删除和重新加载数据的时间。删除数据时,快照覆盖的任何数据都不会被删除。从du输出中可以看出:
请注意3 x 12.4 = 37.2。因此,您的所有快照使用的是76.8 - 37.2 = 39.6 T,而实时文件系统使用的是37.2T。-x开关排除了快照数据,并且在实时文件系统中也显示37.2T。
在快照目录上运行du可以看到,它只是告诉你在捕获快照时快照中的文件使用了多少空间,其中一些空间将在所有快照甚至是活动文件系统之间共享,所以你不知道哪个快照使用了最多的空间。
如果从最旧的快照开始删除快照,则空间使用量应会减少。
如果群集的工作负载频繁删除和重新创建大量数据,则快照将大大增加群集上的空间需求。
xe55xuns2#
如果删除快照,将使用较少的内存。
为了提醒您为什么snapshots会随着时间的推移而变大:
HDFS快照的实施非常高效:
快照创建是即时的:如果不包括索引节点查找时间,则开销为O(1)。只有在对快照进行修改时才使用额外的内存:内存使用是O(M),其中M是修改的文件/目录的数量。数据节点中的块不被复制:快照文件记录块列表和文件大小。没有数据复制。快照不会对常规HDFS操作产生负面影响:修改按时间倒序记录,以便可以直接访问当前数据。2快照数据通过从当前数据中减去修改来计算。