【问题标题】:How Trash Check point interval works in hadoop? and why checkpoint_intereval is required?垃圾检查点间隔如何在 hadoop 中工作?为什么需要 checkpoint_intereval?
【发布时间】:2017-02-19 03:14:02
【问题描述】:

我实际上已经尝试过这个来理解这个概念,但我仍然不清楚。

比如说 fs.trash.interval=9min 和 fs.trash.checkpoint.interval=2min

现在我在 10:00 删除 file1,在 10:03 删除 file2。 它说它被移动到“/user/xxx/.trash/current”并且当前目录在一段时间内消失了,我可以看到检查点文件夹 在那里,它看起来像这样“/user/xxx/.trash/(date_somenumber)”。

据我了解,file1 应在 10:09 永久删除,file2 应在 10:11 永久删除。

如果检查点每 2 分钟发生一次,请说
第一天 10:02
2日 10:04
3日 10:06
4日10:08
5日10:10
6日10:12
所以 file1 应该在第 5 个 checkpoint_intereval 和 file2 在第 6 个间隔被删除。

我的怀疑是

1) 当前目录什么时候消失?在 checkpoint_intereval 期间或任何早期时间?

(对我来说,它似乎在一分钟内消失)

2) 对于每个检查点间隔,只有当新文件被删除并且是抽象文件时才会形成新文件夹?

(所以,这是否意味着每 2 分钟检查点对我们来说是抽象的,它不是每 2 分钟更改一次目录名称)

3) 我们已将垃圾间隔设置为 9 分钟(例如),目的是让文件在垃圾中保存 9 分钟,那么当我们知道它会自动获取时,为什么我们需要 checkpoint_interval 每 2 分钟检查一次(例如) 9 分钟后删除。

(检查点是删除文件的过程吗??因为当我们说 checkpoint_intereval=0 时,默认情况下它仍将垃圾间隔 = 9 分钟作为值,并且检查点每 9 分钟发生一次)

如果我错了,请通过澄清这些疑问来纠正我的理解。

【问题讨论】:

    标签: hadoop apache-spark hadoop2 hadoop-streaming


    【解决方案1】:

    /user/username/.Trash/Current/用于保存最近删除的HDFS文件。

    /user/username/.Trash/CheckpointTime/ 是在检查点间隔期间创建的,它实际上是一个重命名的current 目录。根据trash.intervalcheckpoint.interval 之间存在的时间差,可以有多个检查点。

    fs.trash.interval :检查点被删除的分钟数。 fs.trash.checkpoint.interval :垃圾之间的分钟数 检查点。

    1) 当前目录在检查点间隔期间使用时间戳重命名为检查点目录,而不是更早的任何时候。

    2) 仅当间隔内有任何current 或最近删除时。

    Hadoop 使用的来自Trash 类的 sn-p:

      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 分钟检查一次是否删除。按照配置,每隔 2 分钟,检查点进程会将 current 目录中的文件移动到新的检查点目录,并删除之前创建的所有早于 fs.trash.interval 的检查点。

    引自官方documentation

    最近删除的文件被移动到当前垃圾目录 (/user/username/.Trash/Current),并在可配置的时间间隔内, HDFS 创建检查点(在 /user/username/.Trash/date 下) 当前垃圾目录中的文件,并在它们过期时删除旧的检查点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      相关资源
      最近更新 更多