hadoop ReadStatistics 源码

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

haddop ReadStatistics 代码

文件路径:/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/ReadStatistics.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;

import org.apache.hadoop.hdfs.protocol.BlockType;

/**
 * A utility class that maintains statistics for reading.
 */
public class ReadStatistics {
  private long totalBytesRead;
  private long totalLocalBytesRead;
  private long totalShortCircuitBytesRead;
  private long totalZeroCopyBytesRead;

  private BlockType blockType = BlockType.CONTIGUOUS;
  private long totalEcDecodingTimeMillis;

  public ReadStatistics() {
    clear();
  }

  public ReadStatistics(ReadStatistics rhs) {
    this.totalBytesRead = rhs.getTotalBytesRead();
    this.totalLocalBytesRead = rhs.getTotalLocalBytesRead();
    this.totalShortCircuitBytesRead = rhs.getTotalShortCircuitBytesRead();
    this.totalZeroCopyBytesRead = rhs.getTotalZeroCopyBytesRead();
  }

  /**
   * @return The total bytes read.  This will always be at least as
   * high as the other numbers, since it includes all of them.
   */
  public synchronized long getTotalBytesRead() {
    return totalBytesRead;
  }

  /**
   * @return The total local bytes read.  This will always be at least
   * as high as totalShortCircuitBytesRead, since all short-circuit
   * reads are also local.
   */
  public synchronized long getTotalLocalBytesRead() {
    return totalLocalBytesRead;
  }

  /**
   * @return The total short-circuit local bytes read.
   */
  public synchronized long getTotalShortCircuitBytesRead() {
    return totalShortCircuitBytesRead;
  }

  /**
   * @return The total number of zero-copy bytes read.
   */
  public synchronized long getTotalZeroCopyBytesRead() {
    return totalZeroCopyBytesRead;
  }

  /**
   * @return The total number of bytes read which were not local.
   */
  public synchronized long getRemoteBytesRead() {
    return totalBytesRead - totalLocalBytesRead;
  }

  /**
   * @return block type of the input stream. If block type != CONTIGUOUS,
   * it is reading erasure coded data.
   */
  public synchronized BlockType getBlockType() {
    return blockType;
  }

  /**
   * Return the total time in milliseconds used for erasure coding decoding.
   */
  public synchronized long getTotalEcDecodingTimeMillis() {
    return totalEcDecodingTimeMillis;
  }

  public synchronized void addRemoteBytes(long amt) {
    this.totalBytesRead += amt;
  }

  public synchronized void addLocalBytes(long amt) {
    this.totalBytesRead += amt;
    this.totalLocalBytesRead += amt;
  }

  public synchronized void addShortCircuitBytes(long amt) {
    this.totalBytesRead += amt;
    this.totalLocalBytesRead += amt;
    this.totalShortCircuitBytesRead += amt;
  }

  public synchronized void addZeroCopyBytes(long amt) {
    this.totalBytesRead += amt;
    this.totalLocalBytesRead += amt;
    this.totalShortCircuitBytesRead += amt;
    this.totalZeroCopyBytesRead += amt;
  }

  public synchronized void addErasureCodingDecodingTime(long millis) {
    this.totalEcDecodingTimeMillis += millis;
  }

  synchronized void setBlockType(BlockType blockType) {
    this.blockType = blockType;
  }

  public synchronized void clear() {
    this.totalBytesRead = 0;
    this.totalLocalBytesRead = 0;
    this.totalShortCircuitBytesRead = 0;
    this.totalZeroCopyBytesRead = 0;
    this.totalEcDecodingTimeMillis = 0;
  }
}

相关信息

hadoop 源码目录

相关文章

hadoop AddBlockFlag 源码

hadoop BlockMissingException 源码

hadoop BlockReader 源码

hadoop CannotObtainBlockLengthException 源码

hadoop ClientContext 源码

hadoop ClientGSIContext 源码

hadoop DFSClient 源码

hadoop DFSClientFaultInjector 源码

hadoop DFSHedgedReadMetrics 源码

hadoop DFSInotifyEventInputStream 源码

0  赞