2017-02-19 6 views
1

我已经尝试过用这个来理解这个概念,但我仍然不清楚。垃圾检查点间隔在hadoop中如何工作?为什么checkpoint_intereval是必需的?

比方说 fs.trash.interval = 9分钟和 fs.trash.checkpoint.interval = 2分钟

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

根据我的理解,file1应该在10:09永久删除,在10:11永久删除。

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

我的疑问是

1)没有当前目录中消失的时候?在checkpoint_intereval或任何时候提前?

(对我来说这看起来是一个分钟内消失)

2)为每个检查点间隔新的文件夹只有当新的文件被删除,其余的是抽象的形成?

(所以,它的意思是每2分钟检查点是抽象的对我们来说,它是不会改变每2分钟目录名),我们已经建立垃圾时间间隔与意向9MIN(例如)

3)在垃圾文件中保存9分钟,为什么我们需要checkpoint_interval来检查每2分钟(例如),当我们知道它会在9分钟后自动删除。

(是检查点删除文件的过程?因为当我们说checkpoint_intereval = 0还是默认它需要的价值和检测点在每9分钟间隔垃圾桶9分钟=)

请纠正我的理解,如果我澄清这些疑虑是错误的。

回答

0

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

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

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

1)当前目录是检查时间间隔,而不是随时随地早期期间与时间戳检查点目录重命名。

2)只有在间隔内有任何current或最近的删除。

从由Hadoop的使用Trash类A片段:

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)它是checkpointer过程来检查每2分钟不删除,以及。每配置2分钟,检查点进程就会将current目录中的文件移动到新的检查点目录,并删除先前创建的早于fs.trash.interval的所有检查点。

从官方documentation报价:

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

0

请看看blog是否有帮助。

相关问题