View Javadoc

1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.hadoop.hbase.regionserver;
20  
21  import java.io.Closeable;
22  
23  /**
24   * This interface will be implemented to allow region server to push table metrics into
25   * MetricsRegionAggregateSource that will in turn push data to the Hadoop metrics system.
26   */
27  public interface MetricsTableSource extends Comparable<MetricsTableSource>, Closeable {
28  
29    String TABLE_SIZE = "tableSize";
30    String TABLE_SIZE_DESC = "Total size of the table in the region server";
31  
32    String getTableName();
33  
34    /**
35     * Close the table's metrics as all the region are closing.
36     */
37    @Override
38    void close();
39  
40    void registerMetrics();
41  
42    /**
43     * Get the aggregate source to which this reports.
44     */
45    MetricsTableAggregateSource getAggregateSource();
46  
47    /**
48     * Update the split transaction time histogram
49     * @param t time it took, in milliseconds
50     */
51    void updateSplitTime(long t);
52  
53    /**
54     * Increment number of a requested splits
55     */
56    void incrSplitRequest();
57  
58    /**
59     * Increment number of successful splits
60     */
61    void incrSplitSuccess();
62  
63    /**
64     * Update the flush time histogram
65     * @param t time it took, in milliseconds
66     */
67    void updateFlushTime(long t);
68  
69    /**
70     * Update the flush memstore size histogram
71     * @param bytes the number of bytes in the memstore
72     */
73    void updateFlushMemstoreSize(long bytes);
74  
75    /**
76     * Update the flush output file size histogram
77     * @param bytes the number of bytes in the output file
78     */
79    void updateFlushOutputSize(long bytes);
80  
81    /**
82     * Update the compaction time histogram, both major and minor
83     * @param isMajor whether compaction is a major compaction
84     * @param t time it took, in milliseconds
85     */
86    void updateCompactionTime(boolean isMajor, long t);
87  
88    /**
89     * Update the compaction input number of files histogram
90     * @param isMajor whether compaction is a major compaction
91     * @param c number of files
92     */
93    void updateCompactionInputFileCount(boolean isMajor, long c);
94  
95    /**
96     * Update the compaction total input file size histogram
97     * @param isMajor whether compaction is a major compaction
98     * @param bytes the number of bytes of the compaction input file
99     */
100   void updateCompactionInputSize(boolean isMajor, long bytes);
101 
102   /**
103    * Update the compaction output number of files histogram
104    * @param isMajor whether compaction is a major compaction
105    * @param c number of files
106    */
107   void updateCompactionOutputFileCount(boolean isMajor, long c);
108 
109   /**
110    * Update the compaction total output file size
111    * @param isMajor whether compaction is a major compaction
112    * @param bytes the number of bytes of the compaction input file
113    */
114   void updateCompactionOutputSize(boolean isMajor, long bytes);
115 
116 }