We're seen reasonable performance, with the caveat that you need to
parallelize the scan doing the aggregation. In our benchmarking, we have
the client scan each region in parallel and have a coprocessor aggregate
the row count and return a single row back (with the client then
totaling the counts it gets back). Here are the numbers we've seen when
aggregating 1 million rows, this with a slightly older hbase version
(~0.92):
Schema: 50col x 50bytes with compressible data
Regions RowCount RowCount with single binary filter
Time (sec) Time (sec)
1 11.3 19.0
4 3.5 5.6
16 1.8 2.6
32 1.2 1.8
Schema: 1col x 2500bytes with compressible data
Regions RowCount RowCount with single binary filter
Time (sec) Time (sec)
1 7.0 7.0
4 1.2 1.2
16 0.7 0.7
32 0.3 0.3
This is run on a four machine cluster with each machine having 4G Heap
and with the servers warmed-up (cached data).
Hope this helps.
James
On 05/03/2012 08:01 AM, Tom Brown wrote:
For our solution we are doing some aggregation on the server via
coprocessors. In general, for each row there are 8 columns: 7 columns
that contain numbers (for summation) and 1 column that contains a
hyperloglog counter (about 700bytes). Functionally, this solution
works well and ought to scale with the number of region servers.
However, the individual request performance leaves a little to be
desired. What we've seen is that to scan 40000 rows (aggregated into
3000 rows) takes about 4 seconds.
Our code is in it's early stages (unoptimized) so we hope to see some
significant performance improvements when we run our coprocessor under
a profiler. Our benchmarks were on underpowered machines (only 2gb
RAM) as well.
Hope this helps!
--Tom
On Thu, May 3, 2012 at 6:08 AM, Pere Ferrera<[email protected]> wrote:
Hi,
Is anybody benchmarking the performance of server-side aggregations through
co-processors in HBase? I am interested to know if HBase could potentially
be used to calculate real-time SQL-like aggregations at a good level of
performance (q< 200ms on high-load, big dataset scenario). Just curious to
know before I implement my own benchmarks.
Pere.