Coverage Report - org.apache.giraph.block_app.framework.BlockFactory
 
Classes in this File Line Coverage Branch Coverage Complexity
BlockFactory
N/A
N/A
1
 
 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.block_app.framework;
 19  
 
 20  
 import java.util.List;
 21  
 
 22  
 import org.apache.giraph.block_app.framework.block.Block;
 23  
 import org.apache.giraph.conf.GiraphConfiguration;
 24  
 import org.apache.hadoop.conf.Configuration;
 25  
 
 26  
 /**
 27  
  * Class describing a particular application.
 28  
  * Everything except input and output should be fully encapsulated within
 29  
  * this class. For any application, it should be enough to only specify
 30  
  * particular BlockFactory.
 31  
  *
 32  
  * Given configuration, it creates a block that represents a full Giraph job.
 33  
  *
 34  
  * Recommended is to extend AbstractBlockFactory directly for most cases.
 35  
  *
 36  
  * @param <S> Execution stage type
 37  
  */
 38  
 public interface BlockFactory<S> {
 39  
   /**
 40  
    * Based on provided configuration, updates it, such that all necessary
 41  
    * properties are initialized.
 42  
    */
 43  
   void initConfig(GiraphConfiguration conf);
 44  
 
 45  
   /**
 46  
    * Create a block (representing a full Giraph job), based on the given
 47  
    * configuration. Configuration should be treated as immutable at this point.
 48  
    *
 49  
    * If there are issues in configuration, it is very cheap to throw
 50  
    * from this method - as Giraph job will not even start.
 51  
    * This function will be called two times - once before starting
 52  
    * of the Giraph job, to fail early if anything is incorrectly configured.
 53  
    * Second time will be on Master, which will return Block instance
 54  
    * on which createIterator will be called once, which should return
 55  
    * current application run.
 56  
    * initConfig will be called only once, before starting Giraph job itself.
 57  
    * Master will contain configuration already modified by initConfig.
 58  
    */
 59  
   Block createBlock(GiraphConfiguration conf);
 60  
 
 61  
   /**
 62  
    * Create an empty instance of execution stage object.
 63  
    *
 64  
    * Can be used by application to be aware of what was executed before.
 65  
    * Most common example is counting iterations, or for having a boolean whether
 66  
    * some important event happened.
 67  
    *
 68  
    * Execution stage should be immutable object, with creating a new
 69  
    * object when different value is needed.
 70  
    */
 71  
   S createExecutionStage(GiraphConfiguration conf);
 72  
 
 73  
   /**
 74  
    * Get special GC Java options. If returns null, default options are used.
 75  
    */
 76  
   List<String> getGcJavaOpts(Configuration conf);
 77  
 
 78  
   /**
 79  
    * Register outputs to use during the application (vs output at the end of
 80  
    * the application), based on provided configuration.
 81  
    */
 82  
   void registerOutputs(GiraphConfiguration conf);
 83  
 }