Coverage Report - org.apache.giraph.GiraphRunner
 
Classes in this File Line Coverage Branch Coverage Complexity
GiraphRunner
0%
0/30
0%
0/18
2.8
 
 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;
 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  
 /*if[PURE_YARN]
 26  
 import org.apache.giraph.yarn.GiraphYarnClient;
 27  
 end[PURE_YARN]*/
 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  
  * Helper class to run Giraph applications by specifying the actual class name
 38  
  * to use (i.e. vertex, vertex input/output format, combiner, etc.).
 39  
  *
 40  
  * This is the default entry point for Giraph jobs running on any Hadoop
 41  
  * cluster, MRv1 or v2, including Hadoop-specific configuration and setup.
 42  
  */
 43  0
 public class GiraphRunner implements Tool {
 44  
   static {
 45  0
     Configuration.addDefaultResource("giraph-site.xml");
 46  
   }
 47  
 
 48  
   /** Class logger */
 49  0
   private static final Logger LOG = Logger.getLogger(GiraphRunner.class);
 50  
   /** Writable conf */
 51  
   private Configuration conf;
 52  
 
 53  
   @Override
 54  
   public Configuration getConf() {
 55  0
     return conf;
 56  
   }
 57  
 
 58  
   @Override
 59  
   public void setConf(Configuration conf) {
 60  0
     this.conf = conf;
 61  0
   }
 62  
 
 63  
   @Override
 64  
   /**
 65  
    * Drives a job run configured for "Giraph on Hadoop MR cluster"
 66  
    * @param args the command line arguments
 67  
    * @return job run exit code
 68  
    */
 69  
   public int run(String[] args) throws Exception {
 70  0
     if (null == getConf()) { // for YARN profile
 71  0
       conf = new Configuration();
 72  
     }
 73  0
     GiraphConfiguration giraphConf = new GiraphConfiguration(getConf());
 74  0
     CommandLine cmd = ConfigurationUtils.parseArgs(giraphConf, args);
 75  0
     if (null == cmd) {
 76  0
       return 0; // user requested help/info printout, don't run a job.
 77  
     }
 78  
 
 79  
     // set up job for various platforms
 80  0
     final String vertexClassName = args[0];
 81  0
     final String jobName = "Giraph: " + vertexClassName;
 82  
 /*if[PURE_YARN]
 83  
     GiraphYarnClient job = new GiraphYarnClient(giraphConf, jobName);
 84  
 else[PURE_YARN]*/
 85  0
     GiraphJob job = new GiraphJob(giraphConf, jobName);
 86  0
     prepareHadoopMRJob(job, cmd);
 87  
 /*end[PURE_YARN]*/
 88  
 
 89  
     // run the job, collect results
 90  0
     if (LOG.isDebugEnabled()) {
 91  0
       LOG.debug("Attempting to run Vertex: " + vertexClassName);
 92  
     }
 93  0
     boolean verbose = !cmd.hasOption('q');
 94  0
     return job.run(verbose) ? 0 : -1;
 95  
   }
 96  
 
 97  
   /**
 98  
    * Populate internal Hadoop Job (and Giraph IO Formats) with Hadoop-specific
 99  
    * configuration/setup metadata, propagating exceptions to calling code.
 100  
    * @param job the GiraphJob object to help populate Giraph IO Format data.
 101  
    * @param cmd the CommandLine for parsing Hadoop MR-specific args.
 102  
    */
 103  
   private void prepareHadoopMRJob(final GiraphJob job, final CommandLine cmd)
 104  
     throws Exception {
 105  0
     if (cmd.hasOption("vof") || cmd.hasOption("eof")) {
 106  0
       if (cmd.hasOption("op")) {
 107  0
         FileOutputFormatUtil.setOutputPath(job.getInternalJob(),
 108  0
           new Path(cmd.getOptionValue("op")));
 109  
       }
 110  
     }
 111  0
     if (cmd.hasOption("cf")) {
 112  0
       DistributedCache.addCacheFile(new URI(cmd.getOptionValue("cf")),
 113  0
           job.getConfiguration());
 114  
     }
 115  0
   }
 116  
 
 117  
   /**
 118  
    * Execute GiraphRunner.
 119  
    *
 120  
    * @param args Typically command line arguments.
 121  
    * @throws Exception Any exceptions thrown.
 122  
    */
 123  
   public static void main(String[] args) throws Exception {
 124  0
     System.exit(ToolRunner.run(new GiraphRunner(), args));
 125  0
   }
 126  
 }