我实际上已经尝试过这个概念,但我仍然不清楚。
例如,举个例子 fs.trash.interval = 9分钟和 fs.trash.checkpoint.interval = 2分钟现在我在10:00删除file1,在10:03删除file2。 它说它被转移到" /user/xxx/.trash/current"并且当前目录在一段时间内消失了,我可以看到checkpoint文件夹 那里看起来像这样#34; /user/xxx/.trash/(date_somenumber)"
根据我的理解,file1应该在10:09永久删除,file2在10:11永久删除。
如果检查站每2分钟发生一次,请说明
1日10:02
2月10日
3月10日06:00
4月10日8点8分
5月10日10日
6日10:12
所以file1应该在第5个checkpoint_intereval和第6个间隔的file2中被删除。
我怀疑是
1)当前目录何时消失?在checkpoint_intereval期间或任何时间提早?
(对我而言,它似乎在一分钟内就消失了)
2)对于每个检查点间隔,只有在新文件被删除并且是抽象的时候才会形成新文件夹吗?
(所以,这是否意味着每2分钟检查点对我们来说是抽象的,而且每2分钟它不会改变目录名称)
3)我们将垃圾间隔设置为9分钟(例如),意图将文件保存在垃圾箱中9分钟,那么为什么我们需要checkpoint_interval来检查每2分钟(例如)我们知道它会自动获取9分钟后删除。
(检查点是一个删除文件的过程吗?因为当我们说checkpoint_intereval = 0时,默认情况下它需要垃圾间隔= 9分钟作为值,检查点每隔9分钟发生一次)
请澄清这些疑问,请纠正我的理解。
答案 0 :(得分:0)
/user/username/.Trash/Current/
用于保存最近删除的HDFS文件。
/user/username/.Trash/CheckpointTime/
,该间隔实际上是重命名的current
目录。根据{{1}}和trash.interval
之间存在的时差,可以有多个检查点。
fs.trash.interval :检查点被删除之前的分钟数。 fs.trash.checkpoint.interval :垃圾箱之间的分钟数 检查点。
1)在检查点间隔期间,使用时间戳重命名当前目录作为检查点目录,而不是之前的任何时间。
2)仅当间隔内有任何checkpoint.interval
或最近删除时。
Hadoop使用的Trash类的片段:
current
3)检查指针过程每2分钟检查一次也会删除。每隔2分钟配置一次,checkpointer进程会将 private void createCheckpoint(Path trashRoot, Date date) throws IOException {
if (!fs.exists(new Path(trashRoot, CURRENT))) {
return;
}
.....
Path checkpoint = checkpointBase;
Path current = new Path(trashRoot, CURRENT);
......
while (true) {
try {
fs.rename(current, checkpoint, Rename.NONE);
.....
.....
目录中的文件移动到新的检查点目录,并删除之前创建的所有早于current
的检查点。
引自官方documentation:
最近删除的文件将移至当前的垃圾箱目录 (/user/username/.Trash/Current),并且在可配置的时间间隔内, HDFS为其创建检查点(在/user/username/.Trash/date下) 当前垃圾目录中的文件,并在过期时删除旧检查点。
答案 1 :(得分:0)
请查看此blog是否有帮助。