1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18 package org.apache.giraph.job;
19
20 import org.apache.hadoop.conf.Configuration;
21 import org.apache.hadoop.mapreduce.Job;
22 import org.apache.hadoop.mapreduce.JobID;
23 import org.apache.hadoop.mapreduce.JobContext;
24 import org.apache.hadoop.mapreduce.TaskAttemptID;
25 import org.apache.hadoop.mapreduce.TaskAttemptContext;
26
27 /*if_not[HADOOP_NON_JOBCONTEXT_IS_INTERFACE]*/
28 import org.apache.hadoop.mapreduce.task.JobContextImpl;
29 import org.apache.hadoop.mapreduce.task.TaskAttemptContextImpl;
30 /*end[HADOOP_NON_JOBCONTEXT_IS_INTERFACE]*/
31
32 /**
33 * Helpers for dealing with Hadoop.
34 */
35 public class HadoopUtils {
36 /** Don't construct */
37 private HadoopUtils() { }
38
39 /**
40 * Create a TaskAttemptContext, supporting many Hadoops.
41 *
42 * @param conf Configuration
43 * @param taskAttemptID TaskAttemptID to use
44 * @return TaskAttemptContext
45 */
46 public static TaskAttemptContext makeTaskAttemptContext(Configuration conf,
47 TaskAttemptID taskAttemptID) {
48 TaskAttemptContext context;
49 /*if[HADOOP_NON_JOBCONTEXT_IS_INTERFACE]
50 context = new TaskAttemptContext(conf, taskAttemptID);
51 else[HADOOP_NON_JOBCONTEXT_IS_INTERFACE]*/
52 context = new TaskAttemptContextImpl(conf, taskAttemptID);
53 /*end[HADOOP_NON_JOBCONTEXT_IS_INTERFACE]*/
54 return context;
55 }
56
57 /**
58 * Create a TaskAttemptContext, supporting many Hadoops.
59 *
60 * @param conf Configuration
61 * @param taskAttemptContext Use TaskAttemptID from this object
62 * @return TaskAttemptContext
63 */
64 public static TaskAttemptContext makeTaskAttemptContext(Configuration conf,
65 TaskAttemptContext taskAttemptContext) {
66 return makeTaskAttemptContext(conf, taskAttemptContext.getTaskAttemptID());
67 }
68
69 /**
70 * Create a TaskAttemptContext, supporting many Hadoops.
71 *
72 * @param conf Configuration
73 * @return TaskAttemptContext
74 */
75 public static TaskAttemptContext makeTaskAttemptContext(Configuration conf) {
76 return makeTaskAttemptContext(conf, new TaskAttemptID());
77 }
78
79 /**
80 * Create a TaskAttemptContext, supporting many Hadoops.
81 *
82 * @return TaskAttemptContext
83 */
84 public static TaskAttemptContext makeTaskAttemptContext() {
85 return makeTaskAttemptContext(new Configuration());
86 }
87
88 /**
89 * Create a JobContext, supporting many Hadoops.
90 *
91 * @param conf Configuration
92 * @param jobID JobID to use
93 * @return JobContext
94 */
95 public static JobContext makeJobContext(Configuration conf, JobID jobID) {
96 JobContext context;
97 /*if[HADOOP_NON_JOBCONTEXT_IS_INTERFACE]
98 context = new JobContext(conf, jobID);
99 else[HADOOP_NON_JOBCONTEXT_IS_INTERFACE]*/
100 context = new JobContextImpl(conf, jobID);
101 /*end[HADOOP_NON_JOBCONTEXT_IS_INTERFACE]*/
102 return context;
103 }
104
105 /**
106 * Get Job ID from job.
107 * May return null for hadoop 0.20.203
108 * @param job submitted job
109 * @return JobId for submitted job.
110 */
111 public static JobID getJobID(Job job) {
112 /*if[HADOOP_JOB_ID_AVAILABLE]
113 return job.getID();
114 else[HADOOP_JOB_ID_AVAILABLE]*/
115 return job.getJobID();
116 /*end[HADOOP_JOB_ID_AVAILABLE]*/
117 }
118
119 /**
120 * Create a JobContext, supporting many Hadoops.
121 *
122 * @param conf Configuration
123 * @param jobContext Use JobID from this object
124 * @return JobContext
125 */
126 public static JobContext makeJobContext(Configuration conf,
127 JobContext jobContext) {
128 return makeJobContext(conf, jobContext.getJobID());
129 }
130
131 /**
132 * Create a JobContext, supporting many Hadoops.
133 *
134 * @param conf Configuration
135 * @return JobContext
136 */
137 public static JobContext makeJobContext(Configuration conf) {
138 return makeJobContext(conf, new JobID());
139 }
140
141 /**
142 * Create a JobContext, supporting many Hadoops.
143 *
144 * @return JobContext
145 */
146 public static JobContext makeJobContext() {
147 return makeJobContext(new Configuration());
148 }
149 }