View Javadoc

1   /**
2    *
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *     http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   */
19  package org.apache.hadoop.hbase.regionserver;
20  
21  import java.net.InetSocketAddress;
22  import java.util.List; 
23  
24  import org.apache.hadoop.hbase.HBaseInterfaceAudience;
25  import org.apache.hadoop.hbase.classification.InterfaceAudience;
26  import org.apache.hadoop.hbase.classification.InterfaceStability;
27  import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName;
28  
29  /**
30   * Abstraction that allows different modules in RegionServer to update/get
31   * the favored nodes information for regions. 
32   */
33  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
34  @InterfaceStability.Evolving
35  public interface FavoredNodesForRegion {
36    /**
37     * Used to update the favored nodes mapping when required.
38     * @param encodedRegionName
39     * @param favoredNodes
40     */
41    void updateRegionFavoredNodesMapping(String encodedRegionName, List<ServerName> favoredNodes);
42  
43    /**
44     * Get the favored nodes mapping for this region. Used when the HDFS create API
45     * is invoked to pass in favored nodes hints for new region files.
46     * @param encodedRegionName
47     * @return array containing the favored nodes' InetSocketAddresses
48     */
49    InetSocketAddress[] getFavoredNodesForRegion(String encodedRegionName);
50  }