1 /* Copyright (c) 2008 Sascha Kohlmann
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU Affero General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Affero General Public License for more details.
12 *
13 * You should have received a copy of the GNU Affero General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 package net.sf.eos.hadoop;
17
18 import static net.sf.eos.config.ConfigurationKey.Type.CLASSNAME;
19 import net.sf.eos.config.ConfigurationKey;
20
21 import org.apache.hadoop.fs.Path;
22 import org.apache.hadoop.mapred.JobConf;
23
24 import java.io.IOException;
25
26 /**
27 * Supports different strategies to fetch the cache path.
28 * @author Sascha Kohlmann
29 * @see FullyDistributedCacheStrategy
30 * @see TestDistributedCacheStrategy
31 */
32 public interface DistributedCacheStrategy {
33
34 /** The key for the name of the strategy implementing class. */
35 @SuppressWarnings("nls")
36 @ConfigurationKey(type=CLASSNAME,
37 description="Supports different strategies to fetch"
38 + " the cache path.")
39 String STRATEGY_IMPL_CONFIG_NAME =
40 "net.sf.eos.hadoop.DistributedCacheStrategy.impl";
41
42 /**
43 * Strategies implementing classes must implement this method.
44 * @param conf the environment configuration to get the cache
45 * @return pathes to the chache.
46 * @throws IOException if an error occurs
47 */
48 Path[] distributedCachePathes(final JobConf conf) throws IOException;
49 }