hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nicolas Liochon (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-7590) Add a costless notifications mechanism from master to regionservers & clients
Date Tue, 02 Apr 2013 10:41:16 GMT

    [ https://issues.apache.org/jira/browse/HBASE-7590?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13619684#comment-13619684

Nicolas Liochon commented on HBASE-7590:

Here is the proposal for the release note:
This allows to setup a multicast connection between the master and the hbase clients. With
the feature on, when a regionserver is marked as dead by the master, the master sends as well
a multicast message that will make the hbase client to disconnect immediately from the dead
server instead of waiting for a socket timeout. Specifically, this allows to set hbase.rpc.timeout
to larger values (like 5 minutes) without impacting the MTTR: without this, even if the dead
regionserver data is now available on another server, the client stays on the dead one, waiting
for an answer that will never come. It's a multicast message, hence cheap, scalable, but unreliable.
For this reason, the master sends the information 5 times, to allow the hbase client to miss
a message. This feature is NOT activated by default. To activate it, add to your hbase-site.xml:


You can as well configure the ip address and port used with the following setting:

> Add a costless notifications mechanism from master to regionservers & clients
> -----------------------------------------------------------------------------
>                 Key: HBASE-7590
>                 URL: https://issues.apache.org/jira/browse/HBASE-7590
>             Project: HBase
>          Issue Type: Bug
>          Components: Client, master, regionserver
>    Affects Versions: 0.96.0
>            Reporter: Nicolas Liochon
>            Assignee: Nicolas Liochon
>             Fix For: 0.95.0, 0.96.0
>         Attachments: 7590.inprogress.patch, 7590.v12.patch, 7590.v12.patch, 7590.v13.patch,
7590.v1.patch, 7590.v1-rebased.patch, 7590.v2.patch, 7590.v3.patch, 7590.v5.patch, 7590.v5.patch
> t would be very useful to add a mechanism to distribute some information to the clients
and regionservers. Especially It would be useful to know globally (regionservers + clients
apps) that some regionservers are dead. This would allow:
> - to lower the load on the system, without clients using staled information and going
on dead machines
> - to make the recovery faster from a client point of view. It's common to use large timeouts
on the client side, so the client may need a lot of time before declaring a region server
dead and trying another one. If the client receives the information separatly about a region
server states, it can take the right decision, and continue/stop to wait accordingly.
> We can also send more information, for example instructions like 'slow down' to instruct
the client to increase the retries delay and so on.
>  Technically, the master could send this information. To lower the load on the system,
we should:
> - have a multicast communication (i.e. the master does not have to connect to all servers
by tcp), with once packet every 10 seconds or so.
> - receivers should not depend on this: if the information is available great. If not,
it should not break anything.
> - it should be optional.
> So at the end we would have a thread in the master sending a protobuf message about the
dead servers on a multicast socket. If the socket is not configured, it does not do anything.
On the client side, when we receive an information that a node is dead, we refresh the cache
about it.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

View raw message