All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ml.shifu.guagua.master.MasterInterceptor Maven / Gradle / Ivy

The newest version!
/*
 * Copyright [2013-2014] PayPal Software Foundation
 *  
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *  
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package ml.shifu.guagua.master;

import ml.shifu.guagua.io.Bytable;

/**
 * {@link MasterInterceptor} defines hook points for each guagua application. Four hooks are defined like hooks before
 * and after application and hooks after and before each iteration.
 * 
 * 

* Almost all services in guagua like coordination, fail-over, profiler are implemented as interceptors. These are * system interceptors can be configured by using command line '-D' parameter. * *

* After system interceptors, user defined interceptors are also supported for user to define his/her own interceptors. * Check SumOutput in examples project to see how interceper is used to save global result at the end of * one guagua application. * *

* For a list of interceptors, the order to call preXXX methods and postXXX methods is different. For example, a and b * two interceptors. The order is * a.preApplication->b.preApplication->a.preIteration->b.preIteration->computation->b.postIteration * ->a.postIteration->b.postApplication->a.postApplication. This is like call stack to make sure each * interceptor to intercept the whole other interceptors and master computation. * *

* {@link BasicMasterInterceptor} is a empty implementation for user to choose the hooks to override. * * @param * master computation result in each iteration. * @param * worker computation result in each iteration. * @see BasicMasterInterceptor */ public interface MasterInterceptor { /** * The hook point before any computation logic. * * @param context * the master context instance which includes worker results and other useful parameters. */ void preApplication(MasterContext context); /** * The hook point before computation of each iteration. * * @param context * the master context instance which includes worker results and other useful parameters. */ void preIteration(MasterContext context); /** * The hook point after computation of each iteration. * * @param context * the master context instance which includes worker results and other useful parameters. */ void postIteration(MasterContext context); /** * The hook point after any computation logic. * * @param context * the master context instance which includes worker results and other useful parameters. */ void postApplication(MasterContext context); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy