1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.mob.compactions;
20
21 import java.io.IOException;
22 import java.util.Arrays;
23 import java.util.List;
24 import java.util.concurrent.ExecutorService;
25
26 import org.apache.hadoop.conf.Configuration;
27 import org.apache.hadoop.fs.FileStatus;
28 import org.apache.hadoop.fs.FileSystem;
29 import org.apache.hadoop.fs.Path;
30 import org.apache.hadoop.hbase.HColumnDescriptor;
31 import org.apache.hadoop.hbase.TableName;
32 import org.apache.hadoop.hbase.classification.InterfaceAudience;
33 import org.apache.hadoop.hbase.mob.MobUtils;
34 import org.apache.hadoop.hbase.util.FSUtils;
35
36
37
38
39 @InterfaceAudience.Private
40 public abstract class MobCompactor {
41
42 protected FileSystem fs;
43 protected Configuration conf;
44 protected TableName tableName;
45 protected HColumnDescriptor column;
46
47 protected Path mobTableDir;
48 protected Path mobFamilyDir;
49 protected ExecutorService pool;
50
51 public MobCompactor(Configuration conf, FileSystem fs, TableName tableName,
52 HColumnDescriptor column, ExecutorService pool) {
53 this.conf = conf;
54 this.fs = fs;
55 this.tableName = tableName;
56 this.column = column;
57 this.pool = pool;
58 mobTableDir = FSUtils.getTableDir(MobUtils.getMobHome(conf), tableName);
59 mobFamilyDir = MobUtils.getMobFamilyPath(conf, tableName, column.getNameAsString());
60 }
61
62
63
64
65
66
67 public List<Path> compact() throws IOException {
68 return compact(false);
69 }
70
71
72
73
74
75
76
77 public List<Path> compact(boolean allFiles) throws IOException {
78 return compact(Arrays.asList(fs.listStatus(mobFamilyDir)), allFiles);
79 }
80
81
82
83
84
85
86
87
88 public abstract List<Path> compact(List<FileStatus> files, boolean allFiles)
89 throws IOException;
90 }