Project

General

Profile

1
package eu.dnetlib.data.hadoop;
2

    
3
import java.io.IOException;
4
import java.util.Map;
5

    
6
import com.google.common.collect.Maps;
7
import com.google.gson.Gson;
8
import eu.dnetlib.data.hadoop.config.ClusterName;
9
import eu.dnetlib.data.hadoop.hbase.HBaseAdminFactory;
10
import eu.dnetlib.data.hadoop.mapred.JobClientFactory;
11
import eu.dnetlib.data.hadoop.oozie.OozieClientFactory;
12
import eu.dnetlib.data.hadoop.rmi.HadoopServiceException;
13
import org.apache.commons.logging.Log;
14
import org.apache.commons.logging.LogFactory;
15
import org.apache.hadoop.hbase.client.HBaseAdmin;
16
import org.apache.hadoop.mapred.JobClient;
17
import org.apache.oozie.client.OozieClient;
18
import org.springframework.beans.factory.annotation.Required;
19

    
20

    
21
public class HadoopClientMap {
22

    
23
	private static final Log log = LogFactory.getLog(HadoopClientMap.class); // NOPMD by marko on 11/24/08 5:02 PM
24

    
25
	private JobClientFactory jobClientFactory;
26

    
27
	private OozieClientFactory oozieClientFactory;
28

    
29
	private HBaseAdminFactory hbaseAdminFactory;
30

    
31
	private Map<String, Map<String, String>> enabledClients = Maps.newHashMap();
32

    
33
	public boolean isMapreduceAvailable(final ClusterName name) {
34
		return isClientAvailable(name, "mapred");
35
	}
36

    
37
	public boolean isOozieAvailable(final ClusterName name) {
38
		return isClientAvailable(name, "oozie");
39
	}
40

    
41
	public boolean isHbaseAvailable(final ClusterName name) {
42
		return isClientAvailable(name, "hbase");
43
	}
44

    
45
	private boolean isClientAvailable(final ClusterName name, final String clientName) {
46
		final String clusterName = name.toString();
47
		return enabledClients.containsKey(clusterName) && "true".equals(enabledClients.get(clusterName).get(clientName));
48
	}
49

    
50
	public JobClient getJtClient(final ClusterName clusterName, final String username) throws HadoopServiceException, IOException {
51
		if (!isMapreduceAvailable(clusterName)) {
52
			throw new HadoopServiceException("jobtracker is not available for cluster " + clusterName.toString());
53
		}
54
		return getJobClientFactory().newInstance(clusterName, username);
55
	}
56

    
57
	public JobClient getJtClient(final ClusterName clusterName) throws HadoopServiceException, IOException {
58
		if (!isMapreduceAvailable(clusterName)) {
59
			throw new HadoopServiceException("jobtracker is not available for cluster " + clusterName.toString());
60
		}
61
		return getJobClientFactory().newInstance(clusterName);
62
	}
63

    
64
	public OozieClient getOozieClient(final ClusterName name) throws HadoopServiceException {
65
		if (!isOozieAvailable(name)) {
66
			throw new HadoopServiceException("oozie is not available for cluster " + name.toString());
67
		}
68
		return getOozieClientFactory().newInstance(name);
69
	}
70

    
71
	public HBaseAdmin getHbaseAdmin(final ClusterName name) throws HadoopServiceException {
72
		if (!isHbaseAvailable(name)) {
73
			throw new HadoopServiceException("hbase is not available for cluster " + name.toString());
74
		}
75
		return getHbaseAdminFactory().newInstance(name);
76
	}
77

    
78
	// //////////
79

    
80
	public String getEnabledClients() {
81
		return new Gson().toJson(enabledClients);
82
	}
83

    
84
	@Required
85
	@SuppressWarnings("unchecked")
86
	public void setEnabledClients(final String enabledClients) {
87
		this.enabledClients = new Gson().fromJson(enabledClients, Map.class);
88
	}
89

    
90
	public JobClientFactory getJobClientFactory() {
91
		return jobClientFactory;
92
	}
93

    
94
	@Required
95
	public void setJobClientFactory(final JobClientFactory jobClientFactory) {
96
		this.jobClientFactory = jobClientFactory;
97
	}
98

    
99
	public OozieClientFactory getOozieClientFactory() {
100
		return oozieClientFactory;
101
	}
102

    
103
	@Required
104
	public void setOozieClientFactory(final OozieClientFactory oozieClientFactory) {
105
		this.oozieClientFactory = oozieClientFactory;
106
	}
107

    
108
	public HBaseAdminFactory getHbaseAdminFactory() {
109
		return hbaseAdminFactory;
110
	}
111

    
112
	@Required
113
	public void setHbaseAdminFactory(final HBaseAdminFactory hbaseAdminFactory) {
114
		this.hbaseAdminFactory = hbaseAdminFactory;
115
	}
116

    
117
}
(2-2/7)