1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.giraph;
19
20 import org.apache.commons.cli.CommandLine;
21 import org.apache.giraph.io.formats.FileOutputFormatUtil;
22 import org.apache.giraph.utils.ConfigurationUtils;
23 import org.apache.giraph.conf.GiraphConfiguration;
24 import org.apache.giraph.job.GiraphJob;
25
26
27
28 import org.apache.hadoop.conf.Configuration;
29 import org.apache.hadoop.filecache.DistributedCache;
30 import org.apache.hadoop.fs.Path;
31 import org.apache.hadoop.util.Tool;
32 import org.apache.hadoop.util.ToolRunner;
33 import org.apache.log4j.Logger;
34 import java.net.URI;
35
36
37
38
39
40
41
42
43 public class GiraphRunner implements Tool {
44 static {
45 Configuration.addDefaultResource("giraph-site.xml");
46 }
47
48
49 private static final Logger LOG = Logger.getLogger(GiraphRunner.class);
50
51 private Configuration conf;
52
53 @Override
54 public Configuration getConf() {
55 return conf;
56 }
57
58 @Override
59 public void setConf(Configuration conf) {
60 this.conf = conf;
61 }
62
63 @Override
64
65
66
67
68
69 public int run(String[] args) throws Exception {
70 if (null == getConf()) {
71 conf = new Configuration();
72 }
73 GiraphConfiguration giraphConf = new GiraphConfiguration(getConf());
74 CommandLine cmd = ConfigurationUtils.parseArgs(giraphConf, args);
75 if (null == cmd) {
76 return 0;
77 }
78
79
80 final String vertexClassName = args[0];
81 final String jobName = "Giraph: " + vertexClassName;
82
83
84
85 GiraphJob job = new GiraphJob(giraphConf, jobName);
86 prepareHadoopMRJob(job, cmd);
87
88
89
90 if (LOG.isDebugEnabled()) {
91 LOG.debug("Attempting to run Vertex: " + vertexClassName);
92 }
93 boolean verbose = !cmd.hasOption('q');
94 return job.run(verbose) ? 0 : -1;
95 }
96
97
98
99
100
101
102
103 private void prepareHadoopMRJob(final GiraphJob job, final CommandLine cmd)
104 throws Exception {
105 if (cmd.hasOption("vof") || cmd.hasOption("eof")) {
106 if (cmd.hasOption("op")) {
107 FileOutputFormatUtil.setOutputPath(job.getInternalJob(),
108 new Path(cmd.getOptionValue("op")));
109 }
110 }
111 if (cmd.hasOption("cf")) {
112 DistributedCache.addCacheFile(new URI(cmd.getOptionValue("cf")),
113 job.getConfiguration());
114 }
115 }
116
117
118
119
120
121
122
123 public static void main(String[] args) throws Exception {
124 System.exit(ToolRunner.run(new GiraphRunner(), args));
125 }
126 }