Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Licensed to the Apache Software Foundation (ASF) under one or more
0003  * contributor license agreements.  See the NOTICE file distributed with
0004  * this work for additional information regarding copyright ownership.
0005  * The ASF licenses this file to You under the Apache License, Version 2.0
0006  * (the "License"); you may not use this file except in compliance with
0007  * the License.  You may obtain a copy of the License at
0008  *
0009  *    http://www.apache.org/licenses/LICENSE-2.0
0010  *
0011  * Unless required by applicable law or agreed to in writing, software
0012  * distributed under the License is distributed on an "AS IS" BASIS,
0013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0014  * See the License for the specific language governing permissions and
0015  * limitations under the License.
0016  */
0017 
0018 package org.apache.spark.shuffle.api;
0019 
0020 import org.apache.spark.annotation.Private;
0021 
0022 /**
0023  * :: Private ::
0024  * An interface for plugging in modules for storing and reading temporary shuffle data.
0025  * <p>
0026  * This is the root of a plugin system for storing shuffle bytes to arbitrary storage
0027  * backends in the sort-based shuffle algorithm implemented by the
0028  * {@link org.apache.spark.shuffle.sort.SortShuffleManager}. If another shuffle algorithm is
0029  * needed instead of sort-based shuffle, one should implement
0030  * {@link org.apache.spark.shuffle.ShuffleManager} instead.
0031  * <p>
0032  * A single instance of this module is loaded per process in the Spark application.
0033  * The default implementation reads and writes shuffle data from the local disks of
0034  * the executor, and is the implementation of shuffle file storage that has remained
0035  * consistent throughout most of Spark's history.
0036  * <p>
0037  * Alternative implementations of shuffle data storage can be loaded via setting
0038  * <code>spark.shuffle.sort.io.plugin.class</code>.
0039  * @since 3.0.0
0040  */
0041 @Private
0042 public interface ShuffleDataIO {
0043 
0044   /**
0045    * Called once on executor processes to bootstrap the shuffle data storage modules that
0046    * are only invoked on the executors.
0047    */
0048   ShuffleExecutorComponents executor();
0049 
0050   /**
0051    * Called once on driver process to bootstrap the shuffle metadata modules that
0052    * are maintained by the driver.
0053    */
0054   ShuffleDriverComponents driver();
0055 }