be78e3c4ee
Author: Zhiqiu Kong Summary: Added two separate metrics for both get() and next(). This is done by refactoring on internal next() API. To be more specific, only Get.get() and ResultScanner.next() passes the metric name ("getsize" and "nextsize" repectively) to HRegion::RegionScanner::next(List<KeyValue>, String) This will eventually hit StoreScanner()::next((List<KeyValue>, int, String) where the metrics are counted. And their call paths are: 1) Get HTable::get(final Get get) => HRegionServer::get(byte [] regionName, Get get) => HRegion::get(final Get get, final Integer lockid) => HRegion::get(final Get get) [pass METRIC_GETSIZE to the callee] => HRegion::RegionScanner::next(List<KeyValue> outResults, String metric) => HRegion::RegionScanner::next(List<KeyValue> outResults, int limit, String metric) => HRegion::RegionScanner::nextInternal(int limit, String metric) => KeyValueHeap::next(List<KeyValue> result, int limit, String metric) => StoreScanner::next(List<KeyValue> outResult, int limit, String metric) 2) Next HTable::ClientScanner::next() => ScannerCallable::call() => HRegionServer::next(long scannerId) => HRegionServer::next(final long scannerId, int nbRows) [pass METRIC_NEXTSIZE to the callee] => HRegion::RegionScanner::next(List<KeyValue> outResults, String metric) => HRegion::RegionScanner::next(List<KeyValue> outResults, int limit, String metric) => HRegion::RegionScanner::nextInternal(int limit, String metric) => KeyValueHeap::next(List<KeyValue> result, int limit, String metric) => StoreScanner::next(List<KeyValue> outResult, int limit, String metric) Test Plan: 1. Passed unit tests. 2. Created a testcase TestRegionServerMetrics::testGetNextSize to guarantee: * Get/Next contributes to getsize/nextsize metrics * Both getsize/nextsize are per Column Family * Flush/compaction won't affect these two metrics Reviewed By: mbautin Reviewers: Kannan, mbautin, Liyin, JIRA CC: Kannan, mbautin, Liyin, zhiqiu Differential Revision: https://reviews.facebook.net/D1617 git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1299147 13f79535-47bb-0310-9956-ffa450edef68 |
||
---|---|---|
bin | ||
conf | ||
dev-support | ||
security/src | ||
src | ||
.arcconfig | ||
.gitignore | ||
CHANGES.txt | ||
LICENSE.txt | ||
NOTICE.txt | ||
README.txt | ||
pom.xml |
README.txt
Apache HBase [1] is an open-source, distributed, versioned, column-oriented store modeled after Google' Bigtable: A Distributed Storage System for Structured Data by Chang et al.[2] Just as Bigtable leverages the distributed data storage provided by the Google File System, HBase provides Bigtable-like capabilities on top of Apache Hadoop [3]. To get started using HBase, the full documentation for this release can be found under the doc/ directory that accompanies this README. Using a browser, open the docs/index.html to view the project home page (or browse to [1]). The hbase 'book' at docs/book.html has a 'quick start' section and is where you should being your exploration of the hbase project. The latest HBase can be downloaded from an Apache Mirror [4]. The source code can be found at [5] The HBase issue tracker is at [6] Apache HBase is made available under the Apache License, version 2.0 [7] The HBase mailing lists and archives are listed here [8]. 1. http://hbase.apache.org 2. http://labs.google.com/papers/bigtable.html 3. http://hadoop.apache.org 4. http://www.apache.org/dyn/closer.cgi/hbase/ 5. http://hbase.apache.org/docs/current/source-repository.html 6. http://hbase.apache.org/docs/current/issue-tracking.html 7. http://hbase.apache.org/docs/current/license.html 8. http://hbase.apache.org/docs/current/mail-lists.html