You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ja...@apache.org on 2019/08/27 17:46:15 UTC

[hbase] branch master updated: HBASE-22744 Removed deprecated status and load classes in client module

This is an automated email from the ASF dual-hosted git repository.

janh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new 5106f28  HBASE-22744 Removed deprecated status and load classes in client module
5106f28 is described below

commit 5106f2826ef650f67977497b305b35953213a045
Author: Jan Hentschel <ja...@ultratendency.com>
AuthorDate: Tue Aug 27 19:46:08 2019 +0200

    HBASE-22744 Removed deprecated status and load classes in client module
    
    Signed-off-by: stack <st...@apache.org>
---
 .../org/apache/hadoop/hbase/ClusterStatus.java     | 400 --------------
 .../java/org/apache/hadoop/hbase/RegionLoad.java   | 421 ---------------
 .../java/org/apache/hadoop/hbase/ServerLoad.java   | 596 ---------------------
 .../hadoop/hbase/shaded/protobuf/ProtobufUtil.java |  11 -
 .../hadoop/hbase/rest/TestStatusResource.java      |   2 +-
 .../org/apache/hadoop/hbase/MiniHBaseCluster.java  |  16 +-
 .../hadoop/hbase/TestClientClusterStatus.java      |  43 +-
 .../org/apache/hadoop/hbase/TestRegionLoad.java    | 180 -------
 .../org/apache/hadoop/hbase/TestServerLoad.java    | 103 ----
 .../TestRegionServerReadRequestMetrics.java        |  59 +-
 .../hbase/zookeeper/ClusterStatusTracker.java      |   2 +-
 11 files changed, 49 insertions(+), 1784 deletions(-)

diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java
deleted file mode 100644
index 33c30dd..0000000
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/**
- *
- * 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.hbase;
-
-import edu.umd.cs.findbugs.annotations.Nullable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import org.apache.hadoop.hbase.master.RegionState;
-import org.apache.yetus.audience.InterfaceAudience;
-
-import org.apache.hbase.thirdparty.com.google.common.base.Objects;
-
-/**
- * Status information on the HBase cluster.
- * <p>
- * <tt>ClusterStatus</tt> provides clients with information such as:
- * <ul>
- * <li>The count and names of region servers in the cluster.</li>
- * <li>The count and names of dead region servers in the cluster.</li>
- * <li>The name of the active master for the cluster.</li>
- * <li>The name(s) of the backup master(s) for the cluster, if they exist.</li>
- * <li>The average cluster load.</li>
- * <li>The number of regions deployed on the cluster.</li>
- * <li>The number of requests since last report.</li>
- * <li>Detailed region server loading and resource usage information,
- *  per server and per region.</li>
- * <li>Regions in transition at master</li>
- * <li>The unique cluster ID</li>
- * </ul>
- * <tt>{@link ClusterMetrics.Option}</tt> provides a way to get desired ClusterStatus information.
- * The following codes will get all the cluster information.
- * <pre>
- * {@code
- * // Original version still works
- * Admin admin = connection.getAdmin();
- * ClusterStatus status = admin.getClusterStatus();
- * // or below, a new version which has the same effects
- * ClusterStatus status = admin.getClusterStatus(EnumSet.allOf(Option.class));
- * }
- * </pre>
- * If information about live servers is the only wanted.
- * then codes in the following way:
- * <pre>
- * {@code
- * Admin admin = connection.getAdmin();
- * ClusterStatus status = admin.getClusterStatus(EnumSet.of(Option.LIVE_SERVERS));
- * }
- * </pre>
- * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
- *             Use {@link ClusterMetrics} instead.
- */
-@InterfaceAudience.Public
-@Deprecated
-public class ClusterStatus implements ClusterMetrics {
-
-  // TODO: remove this in 3.0
-  private static final byte VERSION = 2;
-
-  private final ClusterMetrics metrics;
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   */
-  @Deprecated
-  public ClusterStatus(final String hbaseVersion, final String clusterid,
-      final Map<ServerName, ServerLoad> servers,
-      final Collection<ServerName> deadServers,
-      final ServerName master,
-      final Collection<ServerName> backupMasters,
-      final List<RegionState> rit,
-      final String[] masterCoprocessors,
-      final Boolean balancerOn,
-      final int masterInfoPort) {
-    // TODO: make this constructor private
-    this(ClusterMetricsBuilder.newBuilder().setHBaseVersion(hbaseVersion)
-      .setDeadServerNames(new ArrayList<>(deadServers))
-      .setLiveServerMetrics(servers.entrySet().stream()
-      .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())))
-      .setBackerMasterNames(new ArrayList<>(backupMasters)).setBalancerOn(balancerOn)
-      .setClusterId(clusterid)
-      .setMasterCoprocessorNames(Arrays.asList(masterCoprocessors))
-      .setMasterName(master)
-      .setMasterInfoPort(masterInfoPort)
-      .setRegionsInTransition(rit)
-      .build());
-  }
-
-  @InterfaceAudience.Private
-  public ClusterStatus(ClusterMetrics metrics) {
-    this.metrics = metrics;
-  }
-
-  /**
-   * @return the names of region servers on the dead list
-   */
-  @Override
-  public List<ServerName> getDeadServerNames() {
-    return metrics.getDeadServerNames();
-  }
-
-  @Override
-  public Map<ServerName, ServerMetrics> getLiveServerMetrics() {
-    return metrics.getLiveServerMetrics();
-  }
-
-  /**
-  * @return the number of region servers in the cluster
-  * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-  *             Use {@link #getLiveServerMetrics()}.
-  */
-  @Deprecated
-  public int getServersSize() {
-    return metrics.getLiveServerMetrics().size();
-  }
-
-  /**
-   * @return the number of dead region servers in the cluster
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             (<a href="https://issues.apache.org/jira/browse/HBASE-13656">HBASE-13656</a>).
-   *             Use {@link #getDeadServerNames()}.
-   */
-  @Deprecated
-  public int getDeadServers() {
-    return getDeadServersSize();
-  }
-
-  /**
-   * @return the number of dead region servers in the cluster
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getDeadServerNames()}.
-   */
-  @Deprecated
-  public int getDeadServersSize() {
-    return metrics.getDeadServerNames().size();
-  }
-
-  /**
-   * @return the number of regions deployed on the cluster
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRegionCount()}.
-   */
-  @Deprecated
-  public int getRegionsCount() {
-    return getRegionCount();
-  }
-
-  /**
-   * @return the number of requests since last report
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRequestCount()} instead.
-   */
-  @Deprecated
-  public int getRequestsCount() {
-    return (int) getRequestCount();
-  }
-
-  @Nullable
-  @Override
-  public ServerName getMasterName() {
-    return metrics.getMasterName();
-  }
-
-  @Override
-  public List<ServerName> getBackupMasterNames() {
-    return metrics.getBackupMasterNames();
-  }
-
-  @Override
-  public List<RegionState> getRegionStatesInTransition() {
-    return metrics.getRegionStatesInTransition();
-  }
-
-  /**
-   * @return the HBase version string as reported by the HMaster
-   */
-  public String getHBaseVersion() {
-    return metrics.getHBaseVersion();
-  }
-
-  private Map<ServerName, ServerLoad> getLiveServerLoads() {
-    return metrics.getLiveServerMetrics().entrySet().stream()
-      .collect(Collectors.toMap(e -> e.getKey(), e -> new ServerLoad(e.getValue())));
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof ClusterStatus)) {
-      return false;
-    }
-    ClusterStatus other = (ClusterStatus) o;
-    return Objects.equal(getHBaseVersion(), other.getHBaseVersion()) &&
-      Objects.equal(getLiveServerLoads(), other.getLiveServerLoads()) &&
-      getDeadServerNames().containsAll(other.getDeadServerNames()) &&
-      Arrays.equals(getMasterCoprocessors(), other.getMasterCoprocessors()) &&
-      Objects.equal(getMaster(), other.getMaster()) &&
-      getBackupMasters().containsAll(other.getBackupMasters()) &&
-      Objects.equal(getClusterId(), other.getClusterId()) &&
-      getMasterInfoPort() == other.getMasterInfoPort();
-  }
-
-  @Override
-  public int hashCode() {
-    return metrics.hashCode();
-  }
-
-  /**
-   * @return the object version number
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   */
-  @Deprecated
-  public byte getVersion() {
-    return VERSION;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getLiveServerMetrics()} instead.
-   */
-  @Deprecated
-  public Collection<ServerName> getServers() {
-    return metrics.getLiveServerMetrics().keySet();
-  }
-
-  /**
-   * Returns detailed information about the current master {@link ServerName}.
-   * @return current master information if it exists
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getMasterName} instead.
-   */
-  @Deprecated
-  public ServerName getMaster() {
-    return metrics.getMasterName();
-  }
-
-  /**
-   * @return the number of backup masters in the cluster
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getBackupMasterNames} instead.
-   */
-  @Deprecated
-  public int getBackupMastersSize() {
-    return metrics.getBackupMasterNames().size();
-  }
-
-  /**
-   * @return the names of backup masters
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getBackupMasterNames} instead.
-   */
-  @Deprecated
-  public List<ServerName> getBackupMasters() {
-    return metrics.getBackupMasterNames();
-  }
-
-  /**
-   * @param sn
-   * @return Server's load or null if not found.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getLiveServerMetrics} instead.
-   */
-  @Deprecated
-  public ServerLoad getLoad(final ServerName sn) {
-    ServerMetrics serverMetrics = metrics.getLiveServerMetrics().get(sn);
-    return serverMetrics == null ? null : new ServerLoad(serverMetrics);
-  }
-
-  public String getClusterId() {
-    return metrics.getClusterId();
-  }
-
-  @Override
-  public List<String> getMasterCoprocessorNames() {
-    return metrics.getMasterCoprocessorNames();
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getMasterCoprocessorNames} instead.
-   */
-  @Deprecated
-  public String[] getMasterCoprocessors() {
-    List<String> rval = metrics.getMasterCoprocessorNames();
-    return rval.toArray(new String[rval.size()]);
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getLastMajorCompactionTimestamp(TableName)} instead.
-   */
-  @Deprecated
-  public long getLastMajorCompactionTsForTable(TableName table) {
-    return metrics.getLastMajorCompactionTimestamp(table);
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getLastMajorCompactionTimestamp(byte[])} instead.
-   */
-  @Deprecated
-  public long getLastMajorCompactionTsForRegion(final byte[] region) {
-    return metrics.getLastMajorCompactionTimestamp(region);
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             No flag in 2.0
-   */
-  @Deprecated
-  public boolean isBalancerOn() {
-    return metrics.getBalancerOn() != null && metrics.getBalancerOn();
-  }
-
-  @Override
-  public Boolean getBalancerOn() {
-    return metrics.getBalancerOn();
-  }
-
-  @Override
-  public int getMasterInfoPort() {
-    return metrics.getMasterInfoPort();
-  }
-
-  @Override
-  public List<ServerName> getServersName() {
-    return metrics.getServersName();
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder(1024);
-    sb.append("Master: " + metrics.getMasterName());
-
-    int backupMastersSize = getBackupMastersSize();
-    sb.append("\nNumber of backup masters: " + backupMastersSize);
-    if (backupMastersSize > 0) {
-      for (ServerName serverName: metrics.getBackupMasterNames()) {
-        sb.append("\n  " + serverName);
-      }
-    }
-
-    int serversSize = getServersSize();
-    int serversNameSize = getServersName().size();
-    sb.append("\nNumber of live region servers: "
-        + (serversSize > 0 ? serversSize : serversNameSize));
-    if (serversSize > 0) {
-      for (ServerName serverName : metrics.getLiveServerMetrics().keySet()) {
-        sb.append("\n  " + serverName.getServerName());
-      }
-    } else if (serversNameSize > 0) {
-      for (ServerName serverName : getServersName()) {
-        sb.append("\n  " + serverName.getServerName());
-      }
-    }
-
-    int deadServerSize = metrics.getDeadServerNames().size();
-    sb.append("\nNumber of dead region servers: " + deadServerSize);
-    if (deadServerSize > 0) {
-      for (ServerName serverName : metrics.getDeadServerNames()) {
-        sb.append("\n  " + serverName);
-      }
-    }
-
-    sb.append("\nAverage load: " + getAverageLoad());
-    sb.append("\nNumber of requests: " + getRequestCount());
-    sb.append("\nNumber of regions: " + getRegionsCount());
-
-    int ritSize = metrics.getRegionStatesInTransition().size();
-    sb.append("\nNumber of regions in transition: " + ritSize);
-    if (ritSize > 0) {
-      for (RegionState state: metrics.getRegionStatesInTransition()) {
-        sb.append("\n  " + state.toDescriptiveString());
-      }
-    }
-    return sb.toString();
-  }
-}
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLoad.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLoad.java
deleted file mode 100644
index efcd20b..0000000
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLoad.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/**
- * Copyright The Apache Software Foundation
- *
- * 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.hbase;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import org.apache.hadoop.hbase.util.Strings;
-import org.apache.yetus.audience.InterfaceAudience;
-
-import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos;
-
-/**
- * Encapsulates per-region load metrics.
- * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
- *             Use {@link RegionMetrics} instead.
- */
-@InterfaceAudience.Public
-@Deprecated
-public class RegionLoad implements RegionMetrics {
-  // DONT use this pb object since the byte array backed may be modified in rpc layer
-  // we keep this pb object for BC.
-  protected ClusterStatusProtos.RegionLoad regionLoadPB;
-  private final RegionMetrics metrics;
-
-  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-  public RegionLoad(ClusterStatusProtos.RegionLoad regionLoadPB) {
-    this.regionLoadPB = regionLoadPB;
-    this.metrics = RegionMetricsBuilder.toRegionMetrics(regionLoadPB);
-  }
-
-  RegionLoad(RegionMetrics metrics) {
-    this.metrics = metrics;
-    this.regionLoadPB = RegionMetricsBuilder.toRegionLoad(metrics);
-  }
-
-  /**
-   * @return the region name
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRegionName} instead.
-   */
-  @Deprecated
-  public byte[] getName() {
-    return metrics.getRegionName();
-  }
-
-  @Override
-  public byte[] getRegionName() {
-    return metrics.getRegionName();
-  }
-
-  @Override
-  public int getStoreCount() {
-    return metrics.getStoreCount();
-  }
-
-  @Override
-  public int getStoreFileCount() {
-    return metrics.getStoreFileCount();
-  }
-
-  @Override
-  public Size getStoreFileSize() {
-    return metrics.getStoreFileSize();
-  }
-
-  @Override
-  public Size getMemStoreSize() {
-    return metrics.getMemStoreSize();
-  }
-
-  @Override
-  public long getReadRequestCount() {
-    return metrics.getReadRequestCount();
-  }
-
-  @Override
-  public long getCpRequestCount() {
-    return metrics.getCpRequestCount();
-  }
-
-  @Override
-  public long getFilteredReadRequestCount() {
-    return metrics.getFilteredReadRequestCount();
-  }
-
-  @Override
-  public Size getStoreFileIndexSize() {
-    return metrics.getStoreFileIndexSize();
-  }
-
-  @Override
-  public long getWriteRequestCount() {
-    return metrics.getWriteRequestCount();
-  }
-
-  @Override
-  public Size getStoreFileRootLevelIndexSize() {
-    return metrics.getStoreFileRootLevelIndexSize();
-  }
-
-  @Override
-  public Size getStoreFileUncompressedDataIndexSize() {
-    return metrics.getStoreFileUncompressedDataIndexSize();
-  }
-
-  @Override
-  public Size getBloomFilterSize() {
-    return metrics.getBloomFilterSize();
-  }
-
-  @Override
-  public long getCompactingCellCount() {
-    return metrics.getCompactingCellCount();
-  }
-
-  @Override
-  public long getCompactedCellCount() {
-    return metrics.getCompactedCellCount();
-  }
-
-  @Override
-  public long getCompletedSequenceId() {
-    return metrics.getCompletedSequenceId();
-  }
-
-  @Override
-  public Map<byte[], Long> getStoreSequenceId() {
-    return metrics.getStoreSequenceId();
-  }
-
-  @Override
-  public Size getUncompressedStoreFileSize() {
-    return metrics.getUncompressedStoreFileSize();
-  }
-
-  /**
-   * @return the number of stores
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getStoreCount} instead.
-   */
-  @Deprecated
-  public int getStores() {
-    return metrics.getStoreCount();
-  }
-
-  /**
-   * @return the number of storefiles
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getStoreFileCount} instead.
-   */
-  @Deprecated
-  public int getStorefiles() {
-    return metrics.getStoreFileCount();
-  }
-
-  /**
-   * @return the total size of the storefiles, in MB
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getStoreFileSize} instead.
-   */
-  @Deprecated
-  public int getStorefileSizeMB() {
-    return (int) metrics.getStoreFileSize().get(Size.Unit.MEGABYTE);
-  }
-
-  /**
-   * @return the memstore size, in MB
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getMemStoreSize} instead.
-   */
-  @Deprecated
-  public int getMemStoreSizeMB() {
-    return (int) metrics.getMemStoreSize().get(Size.Unit.MEGABYTE);
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             ((<a href="https://issues.apache.org/jira/browse/HBASE-3935">HBASE-3935</a>)).
-   *             Use {@link #getStoreFileRootLevelIndexSize} instead.
-   */
-  @Deprecated
-  public int getStorefileIndexSizeMB() {
-    // Return value divided by 1024
-    return (getRootIndexSizeKB() >> 10);
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getStoreFileRootLevelIndexSize()} instead.
-   */
-  @Deprecated
-  public int getStorefileIndexSizeKB() {
-    return getRootIndexSizeKB();
-  }
-
-  /**
-   * @return the number of requests made to region
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRequestCount()} instead.
-   */
-  @Deprecated
-  public long getRequestsCount() {
-    return metrics.getRequestCount();
-  }
-
-  /**
-   * @return the number of read requests made to region
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getReadRequestCount} instead.
-   */
-  @Deprecated
-  public long getReadRequestsCount() {
-    return metrics.getReadRequestCount();
-  }
-
-  /**
-   * @return the number of filtered read requests made to region
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getFilteredReadRequestCount} instead.
-   */
-  @Deprecated
-  public long getFilteredReadRequestsCount() {
-    return metrics.getFilteredReadRequestCount();
-  }
-
-  /**
-   * @return the number of write requests made to region
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getWriteRequestCount} instead.
-   */
-  @Deprecated
-  public long getWriteRequestsCount() {
-    return metrics.getWriteRequestCount();
-  }
-
-  /**
-   * @return The current total size of root-level indexes for the region, in KB.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getStoreFileRootLevelIndexSize} instead.
-   */
-  @Deprecated
-  public int getRootIndexSizeKB() {
-    return (int) metrics.getStoreFileRootLevelIndexSize().get(Size.Unit.KILOBYTE);
-  }
-
-  /**
-   * @return The total size of all index blocks, not just the root level, in KB.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getStoreFileUncompressedDataIndexSize} instead.
-   */
-  @Deprecated
-  public int getTotalStaticIndexSizeKB() {
-    return (int) metrics.getStoreFileUncompressedDataIndexSize().get(Size.Unit.KILOBYTE);
-  }
-
-  /**
-   * @return The total size of all Bloom filter blocks, not just loaded into the
-   * block cache, in KB.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getBloomFilterSize} instead.
-   */
-  @Deprecated
-  public int getTotalStaticBloomSizeKB() {
-    return (int) metrics.getBloomFilterSize().get(Size.Unit.KILOBYTE);
-  }
-
-  /**
-   * @return the total number of kvs in current compaction
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getCompactingCellCount} instead.
-   */
-  @Deprecated
-  public long getTotalCompactingKVs() {
-    return metrics.getCompactingCellCount();
-  }
-
-  /**
-   * @return the number of already compacted kvs in current compaction
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getCompactedCellCount} instead.
-   */
-  @Deprecated
-  public long getCurrentCompactedKVs() {
-    return metrics.getCompactedCellCount();
-  }
-
-  /**
-   * This does not really belong inside RegionLoad but its being done in the name of expediency.
-   * @return the completed sequence Id for the region
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getCompletedSequenceId} instead.
-   */
-  @Deprecated
-  public long getCompleteSequenceId() {
-    return metrics.getCompletedSequenceId();
-  }
-
-  /**
-   * @return completed sequence id per store.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getStoreSequenceId} instead.
-   */
-  @Deprecated
-  public List<ClusterStatusProtos.StoreSequenceId> getStoreCompleteSequenceId() {
-    return metrics.getStoreSequenceId().entrySet().stream()
-        .map(s -> ClusterStatusProtos.StoreSequenceId.newBuilder()
-                  .setFamilyName(UnsafeByteOperations.unsafeWrap(s.getKey()))
-                  .setSequenceId(s.getValue())
-                  .build())
-        .collect(Collectors.toList());
-  }
-
-  /**
-   * @return the uncompressed size of the storefiles in MB.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getUncompressedStoreFileSize} instead.
-   */
-  @Deprecated
-  public int getStoreUncompressedSizeMB() {
-    return (int) metrics.getUncompressedStoreFileSize().get(Size.Unit.KILOBYTE);
-  }
-
-  /**
-   * @return the data locality of region in the regionserver.
-   */
-  @Override
-  public float getDataLocality() {
-    return metrics.getDataLocality();
-  }
-
-  @Override
-  public long getLastMajorCompactionTimestamp() {
-    return metrics.getLastMajorCompactionTimestamp();
-  }
-
-  /**
-   * @return the timestamp of the oldest hfile for any store of this region.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getLastMajorCompactionTimestamp} instead.
-   */
-  @Deprecated
-  public long getLastMajorCompactionTs() {
-    return metrics.getLastMajorCompactionTimestamp();
-  }
-
-  /**
-   * @return the reference count for the stores of this region
-   */
-  public int getStoreRefCount() {
-    return metrics.getStoreRefCount();
-  }
-
-  /**
-   * @see java.lang.Object#toString()
-   */
-  @Override
-  public String toString() {
-    StringBuilder sb = Strings.appendKeyValue(new StringBuilder(), "numberOfStores",
-        this.getStores());
-    Strings.appendKeyValue(sb, "numberOfStorefiles", this.getStorefiles());
-    Strings.appendKeyValue(sb, "storeRefCount", this.getStoreRefCount());
-    Strings.appendKeyValue(sb, "storefileUncompressedSizeMB",
-        this.getStoreUncompressedSizeMB());
-    Strings.appendKeyValue(sb, "lastMajorCompactionTimestamp",
-        this.getLastMajorCompactionTs());
-    Strings.appendKeyValue(sb, "storefileSizeMB", this.getStorefileSizeMB());
-    if (this.getStoreUncompressedSizeMB() != 0) {
-      Strings.appendKeyValue(sb, "compressionRatio",
-          String.format("%.4f", (float) this.getStorefileSizeMB() /
-              (float) this.getStoreUncompressedSizeMB()));
-    }
-    Strings.appendKeyValue(sb, "memstoreSizeMB",
-        this.getMemStoreSizeMB());
-    Strings.appendKeyValue(sb, "readRequestsCount",
-        this.getReadRequestsCount());
-    Strings.appendKeyValue(sb, "writeRequestsCount",
-        this.getWriteRequestsCount());
-    Strings.appendKeyValue(sb, "rootIndexSizeKB",
-        this.getRootIndexSizeKB());
-    Strings.appendKeyValue(sb, "totalStaticIndexSizeKB",
-        this.getTotalStaticIndexSizeKB());
-    Strings.appendKeyValue(sb, "totalStaticBloomSizeKB",
-        this.getTotalStaticBloomSizeKB());
-    Strings.appendKeyValue(sb, "totalCompactingKVs",
-        this.getTotalCompactingKVs());
-    Strings.appendKeyValue(sb, "currentCompactedKVs",
-        this.getCurrentCompactedKVs());
-    float compactionProgressPct = Float.NaN;
-    if (this.getTotalCompactingKVs() > 0) {
-      compactionProgressPct = ((float) this.getCurrentCompactedKVs() /
-          (float) this.getTotalCompactingKVs());
-    }
-    Strings.appendKeyValue(sb, "compactionProgressPct",
-        compactionProgressPct);
-    Strings.appendKeyValue(sb, "completeSequenceId",
-        this.getCompleteSequenceId());
-    Strings.appendKeyValue(sb, "dataLocality",
-        this.getDataLocality());
-    return sb.toString();
-  }
-}
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java
deleted file mode 100644
index f7f3204..0000000
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java
+++ /dev/null
@@ -1,596 +0,0 @@
-/**
- * Copyright The Apache Software Foundation
- *
- * 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.hbase;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.stream.Collectors;
-import org.apache.hadoop.hbase.replication.ReplicationLoadSink;
-import org.apache.hadoop.hbase.replication.ReplicationLoadSource;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.util.Strings;
-import org.apache.yetus.audience.InterfaceAudience;
-
-import org.apache.hbase.thirdparty.com.google.common.base.Objects;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos;
-
-/**
- * This class is used for exporting current state of load on a RegionServer.
- *
- * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
- *             Use {@link ServerMetrics} instead.
- */
-@InterfaceAudience.Public
-@Deprecated
-public class ServerLoad implements ServerMetrics {
-  private final ServerMetrics metrics;
-  private int stores = 0;
-  private int storefiles = 0;
-  private int storeUncompressedSizeMB = 0;
-  private int storefileSizeMB = 0;
-  private int memstoreSizeMB = 0;
-  private long storefileIndexSizeKB = 0;
-  private long readRequestsCount = 0;
-  private long cpRequestsCount = 0;
-  private long filteredReadRequestsCount = 0;
-  private long writeRequestsCount = 0;
-  private int rootIndexSizeKB = 0;
-  private int totalStaticIndexSizeKB = 0;
-  private int totalStaticBloomSizeKB = 0;
-  private long totalCompactingKVs = 0;
-  private long currentCompactedKVs = 0;
-
-  /**
-   * DONT USE this construction. It make a fake server name;
-   */
-  @InterfaceAudience.Private
-  public ServerLoad(ClusterStatusProtos.ServerLoad serverLoad) {
-    this(ServerName.valueOf("localhost,1,1"), serverLoad);
-  }
-
-  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-  @InterfaceAudience.Private
-  public ServerLoad(ServerName name, ClusterStatusProtos.ServerLoad serverLoad) {
-    this(ServerMetricsBuilder.toServerMetrics(name, serverLoad));
-    this.serverLoad = serverLoad;
-  }
-
-  @InterfaceAudience.Private
-  public ServerLoad(ServerMetrics metrics) {
-    this.metrics = metrics;
-    this.serverLoad = ServerMetricsBuilder.toServerLoad(metrics);
-    for (RegionMetrics rl : metrics.getRegionMetrics().values()) {
-      stores += rl.getStoreCount();
-      storefiles += rl.getStoreFileCount();
-      storeUncompressedSizeMB += rl.getUncompressedStoreFileSize().get(Size.Unit.MEGABYTE);
-      storefileSizeMB += rl.getStoreFileSize().get(Size.Unit.MEGABYTE);
-      memstoreSizeMB += rl.getMemStoreSize().get(Size.Unit.MEGABYTE);
-      readRequestsCount += rl.getReadRequestCount();
-      cpRequestsCount += rl.getCpRequestCount();
-      filteredReadRequestsCount += rl.getFilteredReadRequestCount();
-      writeRequestsCount += rl.getWriteRequestCount();
-      storefileIndexSizeKB += rl.getStoreFileIndexSize().get(Size.Unit.KILOBYTE);
-      rootIndexSizeKB += rl.getStoreFileRootLevelIndexSize().get(Size.Unit.KILOBYTE);
-      totalStaticIndexSizeKB += rl.getStoreFileUncompressedDataIndexSize().get(Size.Unit.KILOBYTE);
-      totalStaticBloomSizeKB += rl.getBloomFilterSize().get(Size.Unit.KILOBYTE);
-      totalCompactingKVs += rl.getCompactingCellCount();
-      currentCompactedKVs += rl.getCompactedCellCount();
-    }
-  }
-
-  /**
-   * NOTE: Function name cannot start with "get" because then an OpenDataException is thrown because
-   * HBaseProtos.ServerLoad cannot be converted to an open data type(see HBASE-5967).
-   * @return the underlying ServerLoad protobuf object
-   * @deprecated DONT use this pb object since the byte array backed may be modified in rpc layer
-   */
-  @InterfaceAudience.Private
-  @Deprecated
-  public ClusterStatusProtos.ServerLoad obtainServerLoadPB() {
-    return serverLoad;
-  }
-
-  protected ClusterStatusProtos.ServerLoad serverLoad;
-
-  /**
-   * @return number of requests  since last report.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.
-   *             Use {@link #getRequestCountPerSecond} instead.
-   */
-  @Deprecated
-  public long getNumberOfRequests() {
-    return getRequestCountPerSecond();
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             No flag in 2.0
-   */
-  @Deprecated
-  public boolean hasNumberOfRequests() {
-    return true;
-  }
-
-  /**
-   * @return total Number of requests from the start of the region server.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.
-   *             Use {@link #getRequestCount} instead.
-   */
-  @Deprecated
-  public long getTotalNumberOfRequests() {
-    return getRequestCount();
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             No flag in 2.0
-   */
-  @Deprecated
-  public boolean hasTotalNumberOfRequests() {
-    return true;
-  }
-
-  /**
-   * @return the amount of used heap, in MB.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.
-   *             Use {@link #getUsedHeapSize} instead.
-   */
-  @Deprecated
-  public int getUsedHeapMB() {
-    return (int) getUsedHeapSize().get(Size.Unit.MEGABYTE);
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             No flag in 2.0
-   */
-  @Deprecated
-  public boolean hasUsedHeapMB() {
-    return true;
-  }
-
-  /**
-   * @return the maximum allowable size of the heap, in MB.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getMaxHeapSize} instead.
-   */
-  @Deprecated
-  public int getMaxHeapMB() {
-    return (int) getMaxHeapSize().get(Size.Unit.MEGABYTE);
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             No flag in 2.0
-   */
-  @Deprecated
-  public boolean hasMaxHeapMB() {
-    return true;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getStores() {
-    return stores;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.
-   *             Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getStorefiles() {
-    return storefiles;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getStoreUncompressedSizeMB() {
-    return storeUncompressedSizeMB;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getStorefileSizeInMB() {
-    return storefileSizeMB;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getStorefileSizeMB() {
-    return storefileSizeMB;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getMemstoreSizeInMB() {
-    return memstoreSizeMB;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getMemStoreSizeMB() {
-    return memstoreSizeMB;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getStorefileIndexSizeInMB() {
-    // Return value divided by 1024
-    return (int) (getStorefileIndexSizeKB() >> 10);
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public long getStorefileIndexSizeKB() {
-    return storefileIndexSizeKB;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public long getReadRequestsCount() {
-    return readRequestsCount;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public long getCpRequestsCount() {
-    return cpRequestsCount;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public long getFilteredReadRequestsCount() {
-    return filteredReadRequestsCount;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public long getWriteRequestsCount() {
-    return writeRequestsCount;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getRootIndexSizeKB() {
-    return rootIndexSizeKB;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getTotalStaticIndexSizeKB() {
-    return totalStaticIndexSizeKB;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getTotalStaticBloomSizeKB() {
-    return totalStaticBloomSizeKB;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public long getTotalCompactingKVs() {
-    return totalCompactingKVs;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *     Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public long getCurrentCompactedKVs() {
-    return currentCompactedKVs;
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public int getNumberOfRegions() {
-    return metrics.getRegionMetrics().size();
-  }
-
-  @Override
-  public ServerName getServerName() {
-    return metrics.getServerName();
-  }
-
-  @Override
-  public long getRequestCountPerSecond() {
-    return metrics.getRequestCountPerSecond();
-  }
-
-  @Override
-  public long getRequestCount() {
-    return metrics.getRequestCount();
-  }
-
-  @Override
-  public Size getUsedHeapSize() {
-    return metrics.getUsedHeapSize();
-  }
-
-  @Override
-  public Size getMaxHeapSize() {
-    return metrics.getMaxHeapSize();
-  }
-
-  @Override
-  public int getInfoServerPort() {
-    return metrics.getInfoServerPort();
-  }
-
-  /**
-   * Call directly from client such as hbase shell
-   * @return the list of ReplicationLoadSource
-   */
-  @Override
-  public List<ReplicationLoadSource> getReplicationLoadSourceList() {
-    return metrics.getReplicationLoadSourceList();
-  }
-
-  /**
-   * Call directly from client such as hbase shell
-   * @return a map of ReplicationLoadSource list per peer id
-   */
-  @Override
-  public Map<String, List<ReplicationLoadSource>> getReplicationLoadSourceMap() {
-    return metrics.getReplicationLoadSourceMap();
-  }
-
-  /**
-   * Call directly from client such as hbase shell
-   * @return ReplicationLoadSink
-   */
-  @Override
-  public ReplicationLoadSink getReplicationLoadSink() {
-    return metrics.getReplicationLoadSink();
-  }
-
-  @Override
-  public Map<byte[], RegionMetrics> getRegionMetrics() {
-    return metrics.getRegionMetrics();
-  }
-
-  @Override
-  public Set<String> getCoprocessorNames() {
-    return metrics.getCoprocessorNames();
-  }
-
-  @Override
-  public long getReportTimestamp() {
-    return metrics.getReportTimestamp();
-  }
-
-  @Override
-  public long getLastReportTimestamp() {
-    return metrics.getLastReportTimestamp();
-  }
-
-  /**
-   * Originally, this method factored in the effect of requests going to the
-   * server as well. However, this does not interact very well with the current
-   * region rebalancing code, which only factors number of regions. For the
-   * interim, until we can figure out how to make rebalancing use all the info
-   * available, we're just going to make load purely the number of regions.
-   *
-   * @return load factor for this server.
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getNumberOfRegions} instead.
-   */
-  @Deprecated
-  public int getLoad() {
-    // See above comment
-    // int load = numberOfRequests == 0 ? 1 : numberOfRequests;
-    // load *= numberOfRegions == 0 ? 1 : numberOfRegions;
-    // return load;
-    return getNumberOfRegions();
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRegionMetrics} instead.
-   */
-  @Deprecated
-  public Map<byte[], RegionLoad> getRegionsLoad() {
-    return getRegionMetrics().entrySet().stream()
-        .collect(Collectors.toMap(Map.Entry::getKey, e -> new RegionLoad(e.getValue()),
-          (v1, v2) -> {
-            throw new RuntimeException("key collisions?");
-          }, () -> new TreeMap<>(Bytes.BYTES_COMPARATOR)));
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getCoprocessorNames} instead.
-   */
-  @Deprecated
-  public String[] getRegionServerCoprocessors() {
-    return getCoprocessorNames().toArray(new String[getCoprocessorNames().size()]);
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getCoprocessorNames} instead.
-   */
-  @Deprecated
-  public String[] getRsCoprocessors() {
-    return getRegionServerCoprocessors();
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getRequestCountPerSecond} instead.
-   */
-  @Deprecated
-  public double getRequestsPerSecond() {
-    return getRequestCountPerSecond();
-  }
-
-  /**
-   * @see java.lang.Object#toString()
-   */
-  @Override
-  public String toString() {
-    StringBuilder sb = Strings.appendKeyValue(new StringBuilder(), "requestsPerSecond",
-      Double.valueOf(getRequestsPerSecond()));
-    Strings.appendKeyValue(sb, "numberOfOnlineRegions", Integer.valueOf(getNumberOfRegions()));
-    Strings.appendKeyValue(sb, "usedHeapMB", Integer.valueOf(this.getUsedHeapMB()));
-    Strings.appendKeyValue(sb, "maxHeapMB", Integer.valueOf(getMaxHeapMB()));
-    Strings.appendKeyValue(sb, "numberOfStores", Integer.valueOf(this.stores));
-    Strings.appendKeyValue(sb, "numberOfStorefiles", Integer.valueOf(this.storefiles));
-    Strings.appendKeyValue(sb, "storefileUncompressedSizeMB",
-        Integer.valueOf(this.storeUncompressedSizeMB));
-    Strings.appendKeyValue(sb, "storefileSizeMB", Integer.valueOf(this.storefileSizeMB));
-    if (this.storeUncompressedSizeMB != 0) {
-      Strings.appendKeyValue(sb, "compressionRatio", String.format("%.4f",
-          (float) this.storefileSizeMB / (float) this.storeUncompressedSizeMB));
-    }
-    Strings.appendKeyValue(sb, "memstoreSizeMB", Integer.valueOf(this.memstoreSizeMB));
-    Strings.appendKeyValue(sb, "storefileIndexSizeKB",
-        Long.valueOf(this.storefileIndexSizeKB));
-    Strings.appendKeyValue(sb, "readRequestsCount", Long.valueOf(this.readRequestsCount));
-    Strings.appendKeyValue(sb, "cpRequestsCount", Long.valueOf(this.cpRequestsCount));
-    Strings.appendKeyValue(sb, "filteredReadRequestsCount",
-        Long.valueOf(this.filteredReadRequestsCount));
-    Strings.appendKeyValue(sb, "writeRequestsCount", Long.valueOf(this.writeRequestsCount));
-    Strings.appendKeyValue(sb, "rootIndexSizeKB", Integer.valueOf(this.rootIndexSizeKB));
-    Strings.appendKeyValue(sb, "totalStaticIndexSizeKB",
-        Integer.valueOf(this.totalStaticIndexSizeKB));
-    Strings.appendKeyValue(sb, "totalStaticBloomSizeKB",
-        Integer.valueOf(this.totalStaticBloomSizeKB));
-    Strings.appendKeyValue(sb, "totalCompactingKVs", Long.valueOf(this.totalCompactingKVs));
-    Strings.appendKeyValue(sb, "currentCompactedKVs", Long.valueOf(this.currentCompactedKVs));
-    float compactionProgressPct = Float.NaN;
-    if (this.totalCompactingKVs > 0) {
-      compactionProgressPct =
-          Float.valueOf((float) this.currentCompactedKVs / this.totalCompactingKVs);
-    }
-    Strings.appendKeyValue(sb, "compactionProgressPct", compactionProgressPct);
-
-    String[] coprocessorStrings = getRsCoprocessors();
-    if (coprocessorStrings != null) {
-      Strings.appendKeyValue(sb, "coprocessors", Arrays.toString(coprocessorStrings));
-    }
-    return sb.toString();
-  }
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link ServerMetricsBuilder#of(ServerName)} instead.
-   */
-  @Deprecated
-  public static final ServerLoad EMPTY_SERVERLOAD =
-      new ServerLoad(ServerName.valueOf("localhost,1,1"),
-          ClusterStatusProtos.ServerLoad.newBuilder().build());
-
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getReportTimestamp} instead.
-   */
-  @Deprecated
-  public long getReportTime() {
-    return getReportTimestamp();
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects
-        .hashCode(stores, storefiles, storeUncompressedSizeMB, storefileSizeMB, memstoreSizeMB,
-            storefileIndexSizeKB, readRequestsCount, cpRequestsCount, filteredReadRequestsCount,
-            writeRequestsCount, rootIndexSizeKB, totalStaticIndexSizeKB, totalStaticBloomSizeKB,
-            totalCompactingKVs, currentCompactedKVs);
-  }
-
-  @Override
-  public boolean equals(Object other) {
-    if (other == this) return true;
-    if (other instanceof ServerLoad) {
-      ServerLoad sl = ((ServerLoad) other);
-      return stores == sl.stores && storefiles == sl.storefiles
-          && storeUncompressedSizeMB == sl.storeUncompressedSizeMB
-          && storefileSizeMB == sl.storefileSizeMB && memstoreSizeMB == sl.memstoreSizeMB
-          && storefileIndexSizeKB == sl.storefileIndexSizeKB
-          && readRequestsCount == sl.readRequestsCount
-          && cpRequestsCount == sl.cpRequestsCount
-          && filteredReadRequestsCount == sl.filteredReadRequestsCount
-          && writeRequestsCount == sl.writeRequestsCount && rootIndexSizeKB == sl.rootIndexSizeKB
-          && totalStaticIndexSizeKB == sl.totalStaticIndexSizeKB
-          && totalStaticBloomSizeKB == sl.totalStaticBloomSizeKB
-          && totalCompactingKVs == sl.totalCompactingKVs
-          && currentCompactedKVs == sl.currentCompactedKVs;
-    }
-    return false;
-  }
-}
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java
index f31d8e4..353801f 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java
@@ -131,7 +131,6 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRe
 import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionResponse;
 import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoRequest;
 import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadResponse;
 import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoRequest;
 import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoResponse;
 import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileRequest;
@@ -1734,16 +1733,6 @@ public final class ProtobufUtil {
     }
   }
 
-  public static List<org.apache.hadoop.hbase.RegionLoad> getRegionLoadInfo(
-      GetRegionLoadResponse regionLoadResponse) {
-    List<org.apache.hadoop.hbase.RegionLoad> regionLoadList =
-        new ArrayList<>(regionLoadResponse.getRegionLoadsCount());
-    for (RegionLoad regionLoad : regionLoadResponse.getRegionLoadsList()) {
-      regionLoadList.add(new org.apache.hadoop.hbase.RegionLoad(regionLoad));
-    }
-    return regionLoadList;
-  }
-
   /**
    * A helper to close a region given a region name
    * using admin protocol.
diff --git a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java
index 5e4c2d7..9209120 100644
--- a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java
+++ b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java
@@ -100,7 +100,7 @@ public class TestStatusResource {
     TEST_UTIL.waitFor(6000, new Waiter.Predicate<IOException>() {
       @Override
       public boolean evaluate() throws IOException {
-        return TEST_UTIL.getMiniHBaseCluster().getClusterStatus().getAverageLoad() > 0;
+        return TEST_UTIL.getMiniHBaseCluster().getClusterMetrics().getAverageLoad() > 0;
       }
     });
   }
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java
index c3c1e72..99dca1d 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java
@@ -110,7 +110,7 @@ public class MiniHBaseCluster extends HBaseCluster {
     CompatibilityFactory.getInstance(MetricsAssertHelper.class).init();
 
     init(numMasters, numRegionServers, rsPorts, masterClass, regionserverClass);
-    this.initialClusterStatus = getClusterStatus();
+    this.initialClusterStatus = getClusterMetrics();
   }
 
   public Configuration getConfiguration() {
@@ -435,9 +435,9 @@ public class MiniHBaseCluster extends HBaseCluster {
     ServerName rsServerName = t.getRegionServer().getServerName();
 
     long start = System.currentTimeMillis();
-    ClusterStatus clusterStatus = getClusterStatus();
+    ClusterMetrics clusterStatus = getClusterMetrics();
     while ((System.currentTimeMillis() - start) < timeout) {
-      if (clusterStatus != null && clusterStatus.getServers().contains(rsServerName)) {
+      if (clusterStatus != null && clusterStatus.getLiveServerMetrics().containsKey(rsServerName)) {
         return t;
       }
       Threads.sleep(100);
@@ -659,16 +659,6 @@ public class MiniHBaseCluster extends HBaseCluster {
   public void close() throws IOException {
   }
 
-  /**
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             Use {@link #getClusterMetrics()} instead.
-   */
-  @Deprecated
-  public ClusterStatus getClusterStatus() throws IOException {
-    HMaster master = getMaster();
-    return master == null ? null : new ClusterStatus(master.getClusterMetrics());
-  }
-
   @Override
   public ClusterMetrics getClusterMetrics() throws IOException {
     HMaster master = getMaster();
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestClientClusterStatus.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestClientClusterStatus.java
index 635ba8b..f7de667 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestClientClusterStatus.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestClientClusterStatus.java
@@ -89,8 +89,6 @@ public class TestClientClusterStatus {
     // or more requests than expected.
     Assert.assertEquals(status0.getLiveServerMetrics().size(),
         status1.getLiveServerMetrics().size());
-    checkPbObjectNotNull(new ClusterStatus(status0));
-    checkPbObjectNotNull(new ClusterStatus(status1));
   }
 
   @Test
@@ -109,28 +107,26 @@ public class TestClientClusterStatus {
     Waiter.waitFor(CLUSTER.getConfiguration(), 10 * 1000, 100, new Predicate<Exception>() {
       @Override
       public boolean evaluate() throws Exception {
-        ClusterStatus status
-          = new ClusterStatus(ADMIN.getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS)));
+        ClusterMetrics status = ADMIN.getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS));
         Assert.assertNotNull(status);
-        return status.getRegionsCount() > 0;
+        return status.getRegionCount() > 0;
       }
     });
     // Retrieve live servers and dead servers info.
     EnumSet<Option> options =
         EnumSet.of(Option.LIVE_SERVERS, Option.DEAD_SERVERS, Option.SERVERS_NAME);
-    ClusterStatus status = new ClusterStatus(ADMIN.getClusterMetrics(options));
-    checkPbObjectNotNull(status);
+    ClusterMetrics status = ADMIN.getClusterMetrics(options);
     Assert.assertNotNull(status);
-    Assert.assertNotNull(status.getServers());
+    Assert.assertNotNull(status.getLiveServerMetrics().keySet());
     // exclude a dead region server
     Assert.assertEquals(SLAVES -1, numRs);
     // live servers = nums of regionservers
     // By default, HMaster don't carry any regions so it won't report its load.
     // Hence, it won't be in the server list.
-    Assert.assertEquals(status.getServers().size(), numRs);
-    Assert.assertTrue(status.getRegionsCount() > 0);
+    Assert.assertEquals(status.getLiveServerMetrics().keySet().size(), numRs);
+    Assert.assertTrue(status.getRegionCount() > 0);
     Assert.assertNotNull(status.getDeadServerNames());
-    Assert.assertEquals(1, status.getDeadServersSize());
+    Assert.assertEquals(1, status.getDeadServerNames().size());
     ServerName deadServerName = status.getDeadServerNames().iterator().next();
     Assert.assertEquals(DEAD.getServerName(), deadServerName);
     Assert.assertNotNull(status.getServersName());
@@ -158,9 +154,9 @@ public class TestClientClusterStatus {
     Assert.assertEquals(MASTERS, masterThreads.size());
     // Retrieve master and backup masters infos only.
     EnumSet<Option> options = EnumSet.of(Option.MASTER, Option.BACKUP_MASTERS);
-    ClusterStatus status = new ClusterStatus(ADMIN.getClusterMetrics(options));
-    Assert.assertTrue(status.getMaster().equals(activeName));
-    Assert.assertEquals(MASTERS - 1, status.getBackupMastersSize());
+    ClusterMetrics status = ADMIN.getClusterMetrics(options);
+    Assert.assertTrue(status.getMasterName().equals(activeName));
+    Assert.assertEquals(MASTERS - 1, status.getBackupMasterNames().size());
   }
 
   @Test
@@ -168,8 +164,8 @@ public class TestClientClusterStatus {
     EnumSet<Option> options =
         EnumSet.of(Option.MASTER_COPROCESSORS, Option.HBASE_VERSION,
                    Option.CLUSTER_ID, Option.BALANCER_ON);
-    ClusterStatus status = new ClusterStatus(ADMIN.getClusterMetrics(options));
-    Assert.assertTrue(status.getMasterCoprocessors().length == 1);
+    ClusterMetrics status = ADMIN.getClusterMetrics(options);
+    Assert.assertTrue(status.getMasterCoprocessorNames().size() == 1);
     Assert.assertNotNull(status.getHBaseVersion());
     Assert.assertNotNull(status.getClusterId());
     Assert.assertTrue(status.getAverageLoad() == 0.0);
@@ -192,21 +188,6 @@ public class TestClientClusterStatus {
     Assert.assertEquals(postCount + 1, MyObserver.POST_COUNT.get());
   }
 
-  /**
-   * HBASE-19496 do the refactor for ServerLoad and RegionLoad so the inner pb object is useless
-   * now. However, they are Public classes, and consequently we must make sure the all pb objects
-   * have initialized.
-   */
-  private static void checkPbObjectNotNull(ClusterStatus status) {
-    for (ServerName name : status.getLiveServerMetrics().keySet()) {
-      ServerLoad load = status.getLoad(name);
-      Assert.assertNotNull(load.obtainServerLoadPB());
-      for (RegionLoad rl : load.getRegionsLoad().values()) {
-        Assert.assertNotNull(rl.regionLoadPB);
-      }
-    }
-  }
-
   public static class MyObserver implements MasterCoprocessor, MasterObserver {
     private static final AtomicInteger PRE_COUNT = new AtomicInteger(0);
     private static final AtomicInteger POST_COUNT = new AtomicInteger(0);
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestRegionLoad.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestRegionLoad.java
deleted file mode 100644
index 0241a4c..0000000
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestRegionLoad.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * 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.hbase;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-import org.apache.hadoop.hbase.ClusterMetrics.Option;
-import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.RegionInfo;
-import org.apache.hadoop.hbase.client.Table;
-import org.apache.hadoop.hbase.testclassification.MediumTests;
-import org.apache.hadoop.hbase.testclassification.MiscTests;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
-import org.apache.hbase.thirdparty.com.google.common.collect.Maps;
-
-@Category({MiscTests.class, MediumTests.class})
-public class TestRegionLoad {
-
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-      HBaseClassTestRule.forClass(TestRegionLoad.class);
-
-  private static final Logger LOG = LoggerFactory.getLogger(TestRegionLoad.class);
-  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
-  private static Admin admin;
-
-  private static final TableName TABLE_1 = TableName.valueOf("table_1");
-  private static final TableName TABLE_2 = TableName.valueOf("table_2");
-  private static final TableName TABLE_3 = TableName.valueOf("table_3");
-  private static final TableName[] tables = new TableName[]{TABLE_1, TABLE_2, TABLE_3};
-  private static final int MSG_INTERVAL = 500; // ms
-
-  @BeforeClass
-  public static void beforeClass() throws Exception {
-    // Make servers report eagerly. This test is about looking at the cluster status reported.
-    // Make it so we don't have to wait around too long to see change.
-    UTIL.getConfiguration().setInt("hbase.regionserver.msginterval", MSG_INTERVAL);
-    UTIL.startMiniCluster(4);
-    admin = UTIL.getAdmin();
-    admin.balancerSwitch(false, true);
-    createTables();
-  }
-
-  @AfterClass
-  public static void afterClass() throws Exception {
-    UTIL.shutdownMiniCluster();
-  }
-
-  private static void createTables() throws IOException, InterruptedException {
-    byte[][] FAMILIES = new byte [][] {Bytes.toBytes("f")};
-    for (TableName tableName : tables) {
-      Table table =
-          UTIL.createTable(tableName, FAMILIES, HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE);
-      UTIL.waitTableAvailable(tableName);
-      UTIL.loadTable(table, FAMILIES[0]);
-    }
-  }
-
-  @Test
-  public void testRegionLoad() throws Exception {
-
-    // Check if regions match with the regionLoad from the server
-    for (ServerName serverName : admin
-        .getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS)).getLiveServerMetrics().keySet()) {
-      List<RegionInfo> regions = admin.getRegions(serverName);
-      LOG.info("serverName=" + serverName + ", regions=" +
-          regions.stream().map(r -> r.getRegionNameAsString()).collect(Collectors.toList()));
-      Collection<RegionLoad> regionLoads = admin.getRegionMetrics(serverName)
-        .stream().map(r -> new RegionLoad(r)).collect(Collectors.toList());
-      LOG.info("serverName=" + serverName + ", regionLoads=" +
-          regionLoads.stream().map(r -> Bytes.toString(r.getRegionName())).
-              collect(Collectors.toList()));
-      checkRegionsAndRegionLoads(regions, regionLoads);
-    }
-
-    // Check if regionLoad matches the table's regions and nothing is missed
-    for (TableName table : new TableName[]{TABLE_1, TABLE_2, TABLE_3}) {
-      List<RegionInfo> tableRegions = admin.getRegions(table);
-
-      List<RegionLoad> regionLoads = Lists.newArrayList();
-      for (ServerName serverName : admin
-          .getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS)).getLiveServerMetrics().keySet()) {
-        regionLoads.addAll(admin.getRegionMetrics(serverName, table)
-          .stream().map(r -> new RegionLoad(r)).collect(Collectors.toList()));
-      }
-      checkRegionsAndRegionLoads(tableRegions, regionLoads);
-    }
-
-    // Just wait here. If this fixes the test, come back and do a better job.
-    // Would have to redo the below so can wait on cluster status changing.
-    // Admin#getClusterMetrics retrieves data from HMaster. Admin#getRegionMetrics, by contrast,
-    // get the data from RS. Hence, it will fail if we do the assert check before RS has done
-    // the report.
-    TimeUnit.MILLISECONDS.sleep(3 * MSG_INTERVAL);
-
-    // Check RegionLoad matches the regionLoad from ClusterStatus
-    ClusterStatus clusterStatus
-      = new ClusterStatus(admin.getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS)));
-    for (ServerName serverName : clusterStatus.getServers()) {
-      ServerLoad serverLoad = clusterStatus.getLoad(serverName);
-      Map<byte[], RegionLoad> regionLoads = admin.getRegionMetrics(serverName).stream()
-        .collect(Collectors.toMap(e -> e.getRegionName(), e -> new RegionLoad(e),
-          (v1, v2) -> {
-            throw new RuntimeException("impossible!!");
-          }, () -> new TreeMap<>(Bytes.BYTES_COMPARATOR)));
-      LOG.debug("serverName=" + serverName + ", getRegionLoads=" +
-          serverLoad.getRegionsLoad().keySet().stream().map(r -> Bytes.toString(r)).
-              collect(Collectors.toList()));
-      LOG.debug("serverName=" + serverName + ", regionLoads=" +
-          regionLoads.keySet().stream().map(r -> Bytes.toString(r)).
-              collect(Collectors.toList()));
-      compareRegionLoads(serverLoad.getRegionsLoad(), regionLoads);
-    }
-  }
-
-  private void compareRegionLoads(Map<byte[], RegionLoad> regionLoadCluster,
-      Map<byte[], RegionLoad> regionLoads) {
-
-    assertEquals("No of regionLoads from clusterStatus and regionloads from RS doesn't match",
-        regionLoadCluster.size(), regionLoads.size());
-
-    // The contents of region load from cluster and server should match
-    for (byte[] regionName : regionLoadCluster.keySet()) {
-      regionLoads.remove(regionName);
-    }
-    assertEquals("regionLoads from SN should be empty", 0, regionLoads.size());
-  }
-
-  private void checkRegionsAndRegionLoads(Collection<RegionInfo> regions,
-      Collection<RegionLoad> regionLoads) {
-    for (RegionLoad load : regionLoads) {
-      assertNotNull(load.regionLoadPB);
-    }
-
-    assertEquals("No of regions and regionloads doesn't match", regions.size(), regionLoads.size());
-
-    Map<byte[], RegionLoad> regionLoadMap = Maps.newTreeMap(Bytes.BYTES_COMPARATOR);
-    for (RegionLoad regionLoad : regionLoads) {
-      regionLoadMap.put(regionLoad.getName(), regionLoad);
-    }
-    for (RegionInfo info : regions) {
-      assertTrue("Region not in regionLoadMap region:" + info.getRegionNameAsString() +
-        " regionMap: " + regionLoadMap, regionLoadMap.containsKey(info.getRegionName()));
-    }
-  }
-}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestServerLoad.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestServerLoad.java
deleted file mode 100644
index 61db6b8..0000000
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestServerLoad.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * 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.hbase;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.hadoop.hbase.testclassification.MiscTests;
-import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.hbase.thirdparty.com.google.protobuf.ByteString;
-
-import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;
-
-@Category({ MiscTests.class, SmallTests.class })
-public class TestServerLoad {
-
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-      HBaseClassTestRule.forClass(TestServerLoad.class);
-
-  @Test
-  public void testRegionLoadAggregation() {
-    ServerLoad sl = new ServerLoad(ServerName.valueOf("localhost,1,1"), createServerLoadProto());
-    assertEquals(13, sl.getStores());
-    assertEquals(114, sl.getStorefiles());
-    assertEquals(129, sl.getStoreUncompressedSizeMB());
-    assertEquals(504, sl.getRootIndexSizeKB());
-    assertEquals(820, sl.getStorefileSizeMB());
-    assertEquals(82, sl.getStorefileIndexSizeKB());
-    assertEquals(((long) Integer.MAX_VALUE) * 2, sl.getReadRequestsCount());
-    assertEquals(300, sl.getFilteredReadRequestsCount());
-  }
-
-  @Test
-  public void testToString() {
-    ServerLoad sl = new ServerLoad(ServerName.valueOf("localhost,1,1"), createServerLoadProto());
-    String slToString = sl.toString();
-    assertNotNull(sl.obtainServerLoadPB());
-    assertTrue(slToString.contains("numberOfStores=13"));
-    assertTrue(slToString.contains("numberOfStorefiles=114"));
-    assertTrue(slToString.contains("storefileUncompressedSizeMB=129"));
-    assertTrue(slToString.contains("storefileSizeMB=820"));
-    assertTrue(slToString.contains("rootIndexSizeKB=504"));
-    assertTrue(slToString.contains("coprocessors=[]"));
-    assertTrue(slToString.contains("filteredReadRequestsCount=300"));
-  }
-
-  @Test
-  public void testRegionLoadWrapAroundAggregation() {
-    ServerLoad sl = new ServerLoad(ServerName.valueOf("localhost,1,1"), createServerLoadProto());
-    assertNotNull(sl.obtainServerLoadPB());
-    long totalCount = ((long) Integer.MAX_VALUE) * 2;
-    assertEquals(totalCount, sl.getReadRequestsCount());
-    assertEquals(totalCount, sl.getWriteRequestsCount());
-  }
-
-  private ClusterStatusProtos.ServerLoad createServerLoadProto() {
-    HBaseProtos.RegionSpecifier rSpecOne = HBaseProtos.RegionSpecifier.newBuilder()
-      .setType(HBaseProtos.RegionSpecifier.RegionSpecifierType.ENCODED_REGION_NAME)
-      .setValue(ByteString.copyFromUtf8("ASDFGQWERT")).build();
-    HBaseProtos.RegionSpecifier rSpecTwo = HBaseProtos.RegionSpecifier.newBuilder()
-      .setType(HBaseProtos.RegionSpecifier.RegionSpecifierType.ENCODED_REGION_NAME)
-      .setValue(ByteString.copyFromUtf8("QWERTYUIOP")).build();
-
-    ClusterStatusProtos.RegionLoad rlOne =
-      ClusterStatusProtos.RegionLoad.newBuilder().setRegionSpecifier(rSpecOne).setStores(10)
-        .setStorefiles(101).setStoreUncompressedSizeMB(106).setStorefileSizeMB(520)
-        .setFilteredReadRequestsCount(100).setStorefileIndexSizeKB(42).setRootIndexSizeKB(201)
-        .setReadRequestsCount(Integer.MAX_VALUE).setWriteRequestsCount(Integer.MAX_VALUE).build();
-    ClusterStatusProtos.RegionLoad rlTwo =
-      ClusterStatusProtos.RegionLoad.newBuilder().setRegionSpecifier(rSpecTwo).setStores(3)
-        .setStorefiles(13).setStoreUncompressedSizeMB(23).setStorefileSizeMB(300)
-        .setFilteredReadRequestsCount(200).setStorefileIndexSizeKB(40).setRootIndexSizeKB(303)
-        .setReadRequestsCount(Integer.MAX_VALUE).setWriteRequestsCount(Integer.MAX_VALUE).build();
-
-    ClusterStatusProtos.ServerLoad sl =
-      ClusterStatusProtos.ServerLoad.newBuilder().addRegionLoads(rlOne).
-        addRegionLoads(rlTwo).build();
-    return sl;
-  }
-
-}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.java
index f0a02fa..77e3e5f 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.java
@@ -33,8 +33,8 @@ import org.apache.hadoop.hbase.ClusterMetrics.Option;
 import org.apache.hadoop.hbase.CompareOperator;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.RegionLoad;
-import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.RegionMetrics;
+import org.apache.hadoop.hbase.ServerMetrics;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
@@ -170,22 +170,23 @@ public class TestRegionServerReadRequestMetrics {
       requestsMapPrev.put(metric, requestsMap.get(metric));
     }
 
-    ServerLoad serverLoad = null;
-    RegionLoad regionLoadOuter = null;
+    ServerMetrics serverMetrics = null;
+    RegionMetrics regionMetricsOuter = null;
     boolean metricsUpdated = false;
     for (int i = 0; i < MAX_TRY; i++) {
       for (ServerName serverName : serverNames) {
-        serverLoad = new ServerLoad(admin.getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS))
-          .getLiveServerMetrics().get(serverName));
+        serverMetrics = admin.getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS))
+          .getLiveServerMetrics().get(serverName);
 
-        Map<byte[], RegionLoad> regionsLoad = serverLoad.getRegionsLoad();
-        RegionLoad regionLoad = regionsLoad.get(regionInfo.getRegionName());
-        if (regionLoad != null) {
-          regionLoadOuter = regionLoad;
+        Map<byte[], RegionMetrics> regionMetrics = serverMetrics.getRegionMetrics();
+        RegionMetrics regionMetric = regionMetrics.get(regionInfo.getRegionName());
+        if (regionMetric != null) {
+          regionMetricsOuter = regionMetric;
           for (Metric metric : Metric.values()) {
-            if (getReadRequest(serverLoad, regionLoad, metric) > requestsMapPrev.get(metric)) {
+            if (getReadRequest(serverMetrics, regionMetric, metric) > requestsMapPrev.get(metric)) {
               for (Metric metricInner : Metric.values()) {
-                requestsMap.put(metricInner, getReadRequest(serverLoad, regionLoad, metricInner));
+                requestsMap.put(metricInner, getReadRequest(serverMetrics, regionMetric,
+                    metricInner));
               }
               metricsUpdated = true;
               break;
@@ -200,21 +201,24 @@ public class TestRegionServerReadRequestMetrics {
     }
     if (!metricsUpdated) {
       for (Metric metric : Metric.values()) {
-        requestsMap.put(metric, getReadRequest(serverLoad, regionLoadOuter, metric));
+        requestsMap.put(metric, getReadRequest(serverMetrics, regionMetricsOuter, metric));
       }
     }
   }
 
-  private static long getReadRequest(ServerLoad serverLoad, RegionLoad regionLoad, Metric metric) {
+  private static long getReadRequest(ServerMetrics serverMetrics, RegionMetrics regionMetrics,
+      Metric metric) {
     switch (metric) {
       case REGION_READ:
-        return regionLoad.getReadRequestsCount();
+        return regionMetrics.getReadRequestCount();
       case SERVER_READ:
-        return serverLoad.getReadRequestsCount();
+        return serverMetrics.getRegionMetrics().get(regionMetrics.getRegionName())
+            .getReadRequestCount();
       case FILTERED_REGION_READ:
-        return regionLoad.getFilteredReadRequestsCount();
+        return regionMetrics.getFilteredReadRequestCount();
       case FILTERED_SERVER_READ:
-        return serverLoad.getFilteredReadRequestsCount();
+        return serverMetrics.getRegionMetrics().get(regionMetrics.getRegionName())
+            .getFilteredReadRequestCount();
       default:
         throw new IllegalStateException();
     }
@@ -455,15 +459,16 @@ public class TestRegionServerReadRequestMetrics {
 
   private void testReadRequests(byte[] regionName, int expectedReadRequests) throws Exception {
     for (ServerName serverName : serverNames) {
-      ServerLoad serverLoad = new ServerLoad(admin.getClusterMetrics(
-        EnumSet.of(Option.LIVE_SERVERS)).getLiveServerMetrics().get(serverName));
-      Map<byte[], RegionLoad> regionsLoad = serverLoad.getRegionsLoad();
-      RegionLoad regionLoad = regionsLoad.get(regionName);
-      if (regionLoad != null) {
-        LOG.debug("server read request is " + serverLoad.getReadRequestsCount()
-            + ", region read request is " + regionLoad.getReadRequestsCount());
-        assertEquals(3, serverLoad.getReadRequestsCount());
-        assertEquals(3, regionLoad.getReadRequestsCount());
+      ServerMetrics serverMetrics = admin.getClusterMetrics(
+        EnumSet.of(Option.LIVE_SERVERS)).getLiveServerMetrics().get(serverName);
+      Map<byte[], RegionMetrics> regionMetrics = serverMetrics.getRegionMetrics();
+      RegionMetrics regionMetric = regionMetrics.get(regionName);
+      if (regionMetric != null) {
+        LOG.debug("server read request is "
+            + serverMetrics.getRegionMetrics().get(regionName).getReadRequestCount()
+            + ", region read request is " + regionMetric.getReadRequestCount());
+        assertEquals(3, serverMetrics.getRegionMetrics().get(regionName).getReadRequestCount());
+        assertEquals(3, regionMetric.getReadRequestCount());
       }
     }
   }
diff --git a/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.java b/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.java
index c78d69a..4abcc48 100644
--- a/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.java
+++ b/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.java
@@ -29,7 +29,7 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;
 
 /**
  * Tracker on cluster settings up in zookeeper.
- * This is not related to {@link org.apache.hadoop.hbase.ClusterStatus}. That class
+ * This is not related to {@link org.apache.hadoop.hbase.ClusterMetrics}. That class
  * is a data structure that holds snapshot of current view on cluster. This class
  * is about tracking cluster attributes up in zookeeper.
  *