HBASE-10997 Add a modulo argument to PE to constrain the key range
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1587801 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
585a4f7778
commit
224aab57a0
|
@ -488,6 +488,7 @@ public class PerformanceEvaluation extends Configured implements Tool {
|
||||||
this.perClientRunRows = that.perClientRunRows;
|
this.perClientRunRows = that.perClientRunRows;
|
||||||
this.numClientThreads = that.numClientThreads;
|
this.numClientThreads = that.numClientThreads;
|
||||||
this.totalRows = that.totalRows;
|
this.totalRows = that.totalRows;
|
||||||
|
this.modulo = that.modulo;
|
||||||
this.sampleRate = that.sampleRate;
|
this.sampleRate = that.sampleRate;
|
||||||
this.tableName = that.tableName;
|
this.tableName = that.tableName;
|
||||||
this.flushCommits = that.flushCommits;
|
this.flushCommits = that.flushCommits;
|
||||||
|
@ -507,6 +508,7 @@ public class PerformanceEvaluation extends Configured implements Tool {
|
||||||
public int perClientRunRows = ROWS_PER_GB;
|
public int perClientRunRows = ROWS_PER_GB;
|
||||||
public int numClientThreads = 1;
|
public int numClientThreads = 1;
|
||||||
public int totalRows = ROWS_PER_GB;
|
public int totalRows = ROWS_PER_GB;
|
||||||
|
public int modulo = -1;
|
||||||
public float sampleRate = 1.0f;
|
public float sampleRate = 1.0f;
|
||||||
public String tableName = TABLE_NAME;
|
public String tableName = TABLE_NAME;
|
||||||
public boolean flushCommits = true;
|
public boolean flushCommits = true;
|
||||||
|
@ -653,7 +655,7 @@ public class PerformanceEvaluation extends Configured implements Tool {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void testRow(final int i) throws IOException {
|
void testRow(final int i) throws IOException {
|
||||||
Scan scan = new Scan(getRandomRow(this.rand, opts.totalRows));
|
Scan scan = new Scan(getRandomRow(this.rand, opts.modulo));
|
||||||
scan.addColumn(FAMILY_NAME, QUALIFIER_NAME);
|
scan.addColumn(FAMILY_NAME, QUALIFIER_NAME);
|
||||||
scan.setFilter(new WhileMatchFilter(new PageFilter(120)));
|
scan.setFilter(new WhileMatchFilter(new PageFilter(120)));
|
||||||
ResultScanner s = this.table.getScanner(scan);
|
ResultScanner s = this.table.getScanner(scan);
|
||||||
|
@ -768,8 +770,9 @@ public class PerformanceEvaluation extends Configured implements Tool {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void testRow(final int i) throws IOException {
|
void testRow(final int i) throws IOException {
|
||||||
Get get = new Get(getRandomRow(this.rand, opts.totalRows));
|
Get get = new Get(getRandomRow(this.rand, opts.modulo));
|
||||||
get.addColumn(FAMILY_NAME, QUALIFIER_NAME);
|
get.addColumn(FAMILY_NAME, QUALIFIER_NAME);
|
||||||
|
if (LOG.isTraceEnabled()) LOG.trace(get.toString());
|
||||||
if (opts.multiGet > 0) {
|
if (opts.multiGet > 0) {
|
||||||
this.gets.add(get);
|
this.gets.add(get);
|
||||||
if (this.gets.size() == opts.multiGet) {
|
if (this.gets.size() == opts.multiGet) {
|
||||||
|
@ -804,7 +807,7 @@ public class PerformanceEvaluation extends Configured implements Tool {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void testRow(final int i) throws IOException {
|
void testRow(final int i) throws IOException {
|
||||||
byte[] row = getRandomRow(this.rand, opts.totalRows);
|
byte[] row = getRandomRow(this.rand, opts.modulo);
|
||||||
Put put = new Put(row);
|
Put put = new Put(row);
|
||||||
byte[] value = generateData(this.rand, VALUE_LENGTH);
|
byte[] value = generateData(this.rand, VALUE_LENGTH);
|
||||||
if (opts.useTags) {
|
if (opts.useTags) {
|
||||||
|
@ -990,8 +993,8 @@ public class PerformanceEvaluation extends Configured implements Tool {
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
static byte [] getRandomRow(final Random random, final int totalRows) {
|
static byte [] getRandomRow(final Random random, final int modulo) {
|
||||||
return format(random.nextInt(Integer.MAX_VALUE) % totalRows);
|
return format(random.nextInt(Integer.MAX_VALUE) % modulo);
|
||||||
}
|
}
|
||||||
|
|
||||||
static long runOneClient(final Class<? extends Test> cmd, Configuration conf, TestOptions opts,
|
static long runOneClient(final Class<? extends Test> cmd, Configuration conf, TestOptions opts,
|
||||||
|
@ -1055,6 +1058,7 @@ public class PerformanceEvaluation extends Configured implements Tool {
|
||||||
System.err.println(" nomapred Run multiple clients using threads " +
|
System.err.println(" nomapred Run multiple clients using threads " +
|
||||||
"(rather than use mapreduce)");
|
"(rather than use mapreduce)");
|
||||||
System.err.println(" rows Rows each client runs. Default: One million");
|
System.err.println(" rows Rows each client runs. Default: One million");
|
||||||
|
System.err.println(" modulo Modulo we use dividing random. Default: Clients x rows");
|
||||||
System.err.println(" sampleRate Execute test on a sample of total " +
|
System.err.println(" sampleRate Execute test on a sample of total " +
|
||||||
"rows. Only supported by randomRead. Default: 1.0");
|
"rows. Only supported by randomRead. Default: 1.0");
|
||||||
System.err.println(" table Alternate table name. Default: 'TestTable'");
|
System.err.println(" table Alternate table name. Default: 'TestTable'");
|
||||||
|
@ -1215,11 +1219,18 @@ public class PerformanceEvaluation extends Configured implements Tool {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final String modulo = "--modulo=";
|
||||||
|
if (cmd.startsWith(modulo)) {
|
||||||
|
opts.modulo = Integer.parseInt(cmd.substring(modulo.length()));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
Class<? extends Test> cmdClass = determineCommandClass(cmd);
|
Class<? extends Test> cmdClass = determineCommandClass(cmd);
|
||||||
if (cmdClass != null) {
|
if (cmdClass != null) {
|
||||||
opts.numClientThreads = getNumClients(i + 1, args);
|
opts.numClientThreads = getNumClients(i + 1, args);
|
||||||
// number of rows specified
|
// number of rows specified
|
||||||
opts.totalRows = opts.perClientRunRows * opts.numClientThreads;
|
opts.totalRows = opts.perClientRunRows * opts.numClientThreads;
|
||||||
|
if (opts.modulo == -1) opts.modulo = opts.totalRows;
|
||||||
runTest(cmdClass, opts);
|
runTest(cmdClass, opts);
|
||||||
errCode = 0;
|
errCode = 0;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue