hadoop NamenodePriorityComparator 源码

  • 2022-10-20
  • 浏览 (205)

haddop NamenodePriorityComparator 代码

文件路径:/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/NamenodePriorityComparator.java

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 org.apache.hadoop.hdfs.server.federation.resolver;

import java.io.Serializable;
import java.util.Comparator;

/**
 * Compares NNs in the same namespace and prioritizes by their status. The
 * priorities are:
 * <ul>
 * <li>ACTIVE
 * <li>STANDBY
 * <li>UNAVAILABLE
 * </ul>
 * When two NNs have the same state, the last modification date is the tie
 * breaker, newest has priority. Expired NNs are excluded.
 */
public class NamenodePriorityComparator
    implements Comparator<FederationNamenodeContext>, Serializable {

  private static final long serialVersionUID = 2304924292036293331L;

  @Override
  public int compare(FederationNamenodeContext o1,
      FederationNamenodeContext o2) {
    FederationNamenodeServiceState state1 = o1.getState();
    FederationNamenodeServiceState state2 = o2.getState();

    if (state1 == state2) {
      // Both have the same state, use mode dates
      return compareModDates(o1, o2);
    } else {
      // Enum is ordered by priority
      return state1.compareTo(state2);
    }
  }

  /**
   * Compare the modification dates.
   *
   * @param o1 Context 1.
   * @param o2 Context 2.
   * @return Comparison between dates.
   */
  private int compareModDates(FederationNamenodeContext o1,
      FederationNamenodeContext o2) {
    // Reverse sort, lowest position is highest priority.
    return (int) (o2.getDateModified() - o1.getDateModified());
  }
}

相关信息

hadoop 源码目录

相关文章

hadoop ActiveNamenodeResolver 源码

hadoop FederationNamenodeContext 源码

hadoop FederationNamenodeServiceState 源码

hadoop FederationNamespaceInfo 源码

hadoop FileSubclusterResolver 源码

hadoop MembershipNamenodeResolver 源码

hadoop MountTableManager 源码

hadoop MountTableResolver 源码

hadoop MultipleDestinationMountTableResolver 源码

hadoop NamenodeStatusReport 源码

0  赞