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:
{panel}
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:

  <property>
  <name>hbase.status.publisher.class</name>
    <value>org.apache.hadoop.hbase.master.ClusterStatusPublisher$MulticastPublisher</value>
  </property>

  <property>
    <name>hbase.status.listener.class</name>
    <value>org.apache.hadoop.hbase.client.ClusterStatusListener$MulticastListener</value>
  </property>
  
You can as well configure the ip address and port used with the following setting:
  <property>
    <name>hbase.status.multicast.address.ip</name>
    <value>226.1.1.3</value>
  </property>

  <property>
    <name>hbase.status.multicast.address.port</name>
    <value>6100</value>
  </property>
{panel}
                
> 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

Mime
View raw message