package com.hadooparchitecturebook.zombie.giraph; import org.apache.giraph.conf.GiraphConfiguration; import org.apache.giraph.io.formats.GiraphFileInputFormat; import org.apache.giraph.job.GiraphJob; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; import org.apache.log4j.Logger; public class ZombieBiteJob implements Tool { private static final Logger LOG = Logger.getLogger(ZombieBiteJob.class); private Configuration conf; @Override public void setConf(Configuration conf) { this.conf = conf; } @Override public Configuration getConf() { return conf; } @Override public int run(String[] args) throws Exception { if (args.length != 3) { throw new IllegalArgumentException( "Syntax error: Must have 3 arguments <numbersOfWorkers> <inputLocaiton> <outputLocation>"); } int numberOfWorkers = Integer.parseInt(args[0]); String inputLocation = args[1]; String outputLocation = args[2]; GiraphJob job = new GiraphJob(getConf(), getClass().getName()); GiraphConfiguration gconf = job.getConfiguration(); gconf.setWorkerConfiguration(numberOfWorkers, numberOfWorkers, 100.0f); GiraphFileInputFormat.addVertexInputPath(gconf, new Path(inputLocation)); FileOutputFormat.setOutputPath(job.getInternalJob(), new Path(outputLocation)); gconf.setComputationClass(ZombieComputation.class); gconf.setMasterComputeClass(ZombieMasterCompute.class); gconf.setVertexInputFormatClass(ZombieTextVertexInputFormat.class); gconf.setVertexOutputFormatClass(ZombieTextVertexOutputFormat.class); gconf.setWorkerContextClass(ZombieWorkerContext.class); boolean verbose = true; if (job.run(verbose)) { return 0; } else { return -1; } } public static void main(String[] args) throws Exception { int ret = ToolRunner.run(new ZombieBiteJob(), args); if (ret == 0) { System.out.println("Ended Good"); } else { System.out.println("Ended with Failure"); } System.exit(ret); } }