@InterfaceAudience.Private @InterfaceStability.Evolving public class DefaultOperationQuota extends Object implements OperationQuota
OperationQuota.OperationType
Modifier and Type | Field and Description |
---|---|
private long |
blockSizeBytes |
protected List<QuotaLimiter> |
limiters |
private static double |
MAX_SCAN_ESTIMATE_PROPORTIONAL_LIMIT_CONSUMPTION |
private long |
maxScanEstimate |
private long[] |
operationSize |
protected long |
readAvailable |
private long |
readCapacityUnit |
protected long |
readCapacityUnitConsumed |
protected long |
readCapacityUnitDiff |
protected long |
readConsumed |
protected long |
readDiff |
private boolean |
useResultSizeBytes |
private long |
writeCapacityUnit |
protected long |
writeCapacityUnitConsumed |
protected long |
writeCapacityUnitDiff |
protected long |
writeConsumed |
protected long |
writeDiff |
USE_RESULT_SIZE_BYTES, USE_RESULT_SIZE_BYTES_DEFAULT
Constructor and Description |
---|
DefaultOperationQuota(org.apache.hadoop.conf.Configuration conf,
int blockSizeBytes,
QuotaLimiter... limiters) |
DefaultOperationQuota(org.apache.hadoop.conf.Configuration conf,
List<QuotaLimiter> limiters)
NOTE: The order matters.
|
Modifier and Type | Method and Description |
---|---|
void |
addGetResult(Result result)
Add a get result.
|
void |
addMutation(Mutation mutation)
Add a mutation result.
|
void |
addScanResult(List<Result> results)
Add a scan result.
|
private long |
calculateReadCapacityUnit(long size) |
private long |
calculateReadCapacityUnitDiff(long actualSize,
long estimateSize) |
private long |
calculateWriteCapacityUnit(long size) |
private long |
calculateWriteCapacityUnitDiff(long actualSize,
long estimateSize) |
void |
checkBatchQuota(int numWrites,
int numReads)
Checks if it is possible to execute the specified operation.
|
private void |
checkQuota(long numWrites,
long numReads) |
void |
checkScanQuota(org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanRequest scanRequest,
long maxScannerResultSize,
long maxBlockBytesScanned,
long prevBlockBytesScannedDifference)
Checks if it is possible to execute the scan.
|
void |
close()
Cleanup method on operation completion
|
private long |
estimateConsume(OperationQuota.OperationType type,
int numReqs,
long avgSize) |
long |
getReadAvailable()
Returns the number of bytes available to read to avoid exceeding the quota
|
long |
getReadConsumed()
Returns the number of bytes consumed from the quota by the operation
|
protected static long |
getScanReadConsumeEstimate(long blockSizeBytes,
long nextCallSeq,
long maxScannerResultSize,
long maxBlockBytesScanned,
long prevBlockBytesScannedDifference) |
protected void |
updateEstimateConsumeBatchQuota(int numWrites,
int numReads)
Update estimate quota(read/write size/capacityUnits) which will be consumed
|
protected void |
updateEstimateConsumeScanQuota(org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanRequest scanRequest,
long maxScannerResultSize,
long maxBlockBytesScanned,
long prevBlockBytesScannedDifference)
Update estimate quota(read/write size/capacityUnits) which will be consumed
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getMaxResultSize
private static final double MAX_SCAN_ESTIMATE_PROPORTIONAL_LIMIT_CONSUMPTION
protected final List<QuotaLimiter> limiters
private final long writeCapacityUnit
private final long readCapacityUnit
protected long readAvailable
protected long writeConsumed
protected long readConsumed
protected long writeCapacityUnitConsumed
protected long readCapacityUnitConsumed
private final long[] operationSize
protected long writeDiff
protected long readDiff
protected long writeCapacityUnitDiff
protected long readCapacityUnitDiff
private boolean useResultSizeBytes
private long blockSizeBytes
private long maxScanEstimate
public DefaultOperationQuota(org.apache.hadoop.conf.Configuration conf, int blockSizeBytes, QuotaLimiter... limiters)
public DefaultOperationQuota(org.apache.hadoop.conf.Configuration conf, List<QuotaLimiter> limiters)
public void checkBatchQuota(int numWrites, int numReads) throws RpcThrottlingException
OperationQuota
checkBatchQuota
in interface OperationQuota
numWrites
- number of write operation that will be performednumReads
- number of small-read operation that will be performedRpcThrottlingException
- if the operation cannot be performed because RPC quota is
exceeded.public void checkScanQuota(org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanRequest scanRequest, long maxScannerResultSize, long maxBlockBytesScanned, long prevBlockBytesScannedDifference) throws RpcThrottlingException
OperationQuota
checkScanQuota
in interface OperationQuota
scanRequest
- the given scan operationmaxScannerResultSize
- the maximum bytes to be returned by the scannermaxBlockBytesScanned
- the maximum bytes scanned in a single RPC call by the
scannerprevBlockBytesScannedDifference
- the difference between BBS of the previous two next
callsRpcThrottlingException
- if the operation cannot be performed because RPC quota is
exceeded.private void checkQuota(long numWrites, long numReads) throws RpcThrottlingException
RpcThrottlingException
public void close()
OperationQuota
close
in interface OperationQuota
public long getReadAvailable()
OperationQuota
getReadAvailable
in interface OperationQuota
public long getReadConsumed()
OperationQuota
getReadConsumed
in interface OperationQuota
public void addGetResult(Result result)
OperationQuota
addGetResult
in interface OperationQuota
public void addScanResult(List<Result> results)
OperationQuota
addScanResult
in interface OperationQuota
public void addMutation(Mutation mutation)
OperationQuota
addMutation
in interface OperationQuota
protected void updateEstimateConsumeBatchQuota(int numWrites, int numReads)
numWrites
- the number of write requestsnumReads
- the number of read requestsprotected void updateEstimateConsumeScanQuota(org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanRequest scanRequest, long maxScannerResultSize, long maxBlockBytesScanned, long prevBlockBytesScannedDifference)
scanRequest
- the scan to be executedmaxScannerResultSize
- the maximum bytes to be returned by the scannermaxBlockBytesScanned
- the maximum bytes scanned in a single RPC call by the
scannerprevBlockBytesScannedDifference
- the difference between BBS of the previous two next
callsprotected static long getScanReadConsumeEstimate(long blockSizeBytes, long nextCallSeq, long maxScannerResultSize, long maxBlockBytesScanned, long prevBlockBytesScannedDifference)
private long estimateConsume(OperationQuota.OperationType type, int numReqs, long avgSize)
private long calculateWriteCapacityUnit(long size)
private long calculateReadCapacityUnit(long size)
private long calculateWriteCapacityUnitDiff(long actualSize, long estimateSize)
private long calculateReadCapacityUnitDiff(long actualSize, long estimateSize)
Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.