垃圾检查点间隔如何在hadoop中起作用?为什么需要checkpoint_intereval?

时间:2017-02-19 03:14:03

标签: hadoop apache-spark hadoop2 hadoop-streaming

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

例如,举个例子 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分钟发生一次)

请澄清这些疑问,请纠正我的理解。

2 个答案:

答案 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是否有帮助。