You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hbase.apache.org by Jurriaan Mous <ju...@jurmo.us> on 2014/12/17 18:32:26 UTC

Async RpcClient

Hi,

I have been working on a Netty 4 based async HBase client to fit better within the event driven server I have been developing. - https://github.com/jurmous/async-hbase-client/tree/HBase-0.99 <https://github.com/jurmous/async-hbase-client/tree/HBase-0.99> 

Recently I have been submitting some patches to make it easier to switch out the RpcClient of HBase. This to enable HBase to use the client itself in all communication. I wanted to do this to use the tests on HBase to check if the client was solid on all edge cases but also to enable HBase to possibly migrate to an async client. These were committed on master and branch-1
https://issues.apache.org/jira/browse/HBASE-12597 <https://issues.apache.org/jira/browse/HBASE-12597>
https://issues.apache.org/jira/browse/HBASE-12684 <https://issues.apache.org/jira/browse/HBASE-12684>

Now I am at the next step where I want to contribute back the AsyncRpcClient itself. 

I have opened this issue to add AsyncRpcClient:
https://issues.apache.org/jira/browse/HBASE-12684 <https://issues.apache.org/jira/browse/HBASE-12684>
In the current patch the new async client is the default.

3 questions:

Can anyone with a proper Kerberos setup test if the async client works? SASL Digest auth works but I haven’t tested Kerberos yet. 

Can anyone with know-how on benchmarking test what the performance of this client is compared to the current client? The performance should of course be great in all relevant metrics will it ever be the main client. 

What will we do with the old RpcClient if the async RpcClient is introduced? It would be great to remove it so hbase can internally base anything async (like AsyncProcess) on the async RPC client and this would not be possible with an also supported sync RPC client. A possible route is to make AsyncRpcClient an option on 1.x and a default on 2.0 branch where we remove the old client. 

When the new AsyncRpcClient will be the default it is possible to introduce callback variants of the Table, Scanner and Admin methods and possibly deprecate batch and other AsyncProcess based calls to replace it with a more flexible batch callback implementation. 

Thanks,
Jurriaan