垃圾检查点间隔在hadoop中是如何工作的?为什么需要进行检查点评估?

fwzugrvs  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(331)

我已经尝试了这一点,实际上是为了理解这个概念,但我仍然不清楚。
例如fs.trash.interval=9min和fs.trash.checkpoint.interval=2min
现在我在10:00删除文件1,在10:03删除文件2。它说它被移动到“/user//.trash/current”,当前目录在一段时间内消失了,我可以在那里看到checkpoint文件夹,看起来像这个“/user//.trash/(date\u somenumber)”。
据我所知,文件1应在10:09永久删除,文件2应在10:11永久删除。
如果每2分钟检查一次
1号10:02
第二天10:04
3日10:06
第4天10:08
5日10:10
6日10:12
所以文件1应该在第5个检查点\u intereval删除,文件2应该在第6个检查点\u intereval删除。
我的怀疑是
1) 当前目录何时消失?在检查点检查期间还是提前?
(对我来说,它似乎在一分钟内消失)
2) 对于每个检查点间隔,仅当新文件被删除并且是rest abstract时,才会形成新文件夹?
(那么,这是否意味着每2min检查点对我们来说都是抽象的,并且不是每2min更改一次目录名)
3) 我们已经将垃圾桶间隔设置为9分钟(例如),目的是将9分钟的文件放入垃圾桶,那么为什么我们需要检查点间隔每隔2分钟(例如)检查一次,因为我们知道9分钟后文件将自动删除。
(检查点是删除文件的过程吗??因为当我们说checkpoint\u intereval=0时,默认值仍然是trash interval=9min,checkpoint每隔9min出现一次)
如果我错了,请澄清这些疑问,纠正我的理解。

im9ewurl

im9ewurl1#

/user/username/.Trash/Current/ 用于保存最近删除的hdfs文件。 /user/username/.Trash/CheckpointTime/ 在检查点间隔期间创建,该间隔实际上是重命名的 current 目录。根据检查点之间存在的时间差,可以有多个检查点 trash.interval 以及 checkpoint.interval .
fs.trash.interval:删除检查点的分钟数。fs.trash.checkpoint.interval:垃圾检查点之间的分钟数。
1) 在检查点间隔期间,当前目录将使用时间戳重命名为检查点目录,而不是更早。
2) 只要有 current 或在间隔内最近的删除。
hadoop使用的垃圾类的片段:

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);
        .....
      .....

3) 每2分钟检查一次的checkpointer进程也会执行删除操作。按照配置,每2分钟检查点进程将移动 current 目录添加到新的检查点目录,并删除所有早于 fs.trash.interval .
引用官方文件:
最新删除的文件被移动到当前垃圾箱目录(/user/username/.trash/current),在可配置的时间间隔内,hdfs为当前垃圾箱目录中的文件创建检查点(在/user/username/.trash/date下),并在旧检查点过期时删除它们。

相关问题