Hallo,
It 's weird that hbase aggregate functions don't use MapReduce, this means
that the performance will be very poor.
Is it a must to use coprocessors?
Is there a much easier way to improve the functions' performance ?
Why would performance be poor? I am not dealing a long time with these
coprocessors and am still testing
a lot, but in my perception its much more lightweight on the other hand.
Actually, depending on your row key design and request range, the load
is distributed across the region servers.
Each will handle aggregation for its own key range. The client, invoking
the coprpocessor then must merge the results, which
can be seen as sort of reduce function.
I think one has to precisely think about its own requirements. I am not
sure how and even if M/R Jobs can work for real-time scenarios.
Here, coprocessors seem to be a good alternative, which could also be
limited, depending of how many rows you need to iterate in the
coprocessor for the kind of data you have and expect to request.
However, having the data processed in a M/R job before and persistent
would be faster for the single client request because you only need to
fetch the aggregated data that then already exists. But how recent is
data at this time? Does it change frequently and aggregation results
must be as recent as the data it reflects? Could be a con against M/R...
Regards
tom
Am 25.11.2012 07:26, schrieb Wei Tan:
Actually coprocessor can be used to implement MR-like function, while not
using Hadoop framework.
Best Regards,
Wei
Wei Tan
Research Staff Member
IBM T. J. Watson Research Center
Yorktown Heights, NY 10598
w...@us.ibm.com; 914-784-6752
From: Dalia Sobhy <dalia.mohso...@hotmail.com>
To: "user@hbase.apache.org" <user@hbase.apache.org>,
Date: 11/24/2012 01:33 PM
Subject: RE: Hbase MapReduce
It 's weird that hbase aggregate functions don't use MapReduce, this means
that the performance will be very poor.
Is it a must to use coprocessors?
Is there a much easier way to improve the functions' performance ?
CC: user@hbase.apache.org
From: michael_se...@hotmail.com
Subject: Re: Hbase MapReduce
Date: Sat, 24 Nov 2012 12:05:45 -0600
To: user@hbase.apache.org
Do you think it would be a good idea to temper the use of CoProcessors?
This kind of reminds me of when people first started using stored
procedures...
Sent from a remote device. Please excuse any typos...
Mike Segel
On Nov 24, 2012, at 11:46 AM, tom <t...@arcor.de> wrote:
Hi, but you do not need to us M/R. You could also use coprocessors.
See this site:
https://blogs.apache.org/hbase/entry/coprocessor_introduction
-> in the section "Endpoints"
An aggregation coprocessor ships with hbase that should match your
requirements.
You just need to load it and eventually you can access it from HTable:
HTable.coprocessorExec(..) <
http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#coprocessorExec%28java.lang.Class,%20byte
[],%20byte[],%20org.apache.hadoop.hbase.client.coprocessor.Batch.Call,%20org.apache.hadoop.hbase.client.coprocessor.Batch.Callback%29>
Regards
tom
Am 24.11.2012 18:32, schrieb Marcos Ortiz:
Regards, Dalia.
You have to use MapReduce for that.
In the HBase in Practice´s book, there are lot of great examples for
this.
On 11/24/2012 12:15 PM, Dalia Sobhy wrote:
Dear all,
I wanted to ask a question..
Do Hbase Aggregate Functions such as rowcount, getMax, get Average
use MapReduce to execute those functions?
Thanks :D