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

stack commented on HBASE-5258:
------------------------------

[~sershe] Currently the RegionLoad in ServerLoad is badly overloaded carrying 
both load and attributes.  Historically it was just easiest adding attributes 
to the message the RS was passing the Master on a heartbeat.  Now we are pb'ing 
everywhere, we can entertain breaking load and attributes apart.  Or, as below 
outlines, we'd not put load nor attributes on the heartbeat at all.

Load is currently sent by the regionservers to the master on the old heartbeat 
channel that has been around since the early days.  The only reason the master 
gets the load is so its UI can give a bit of a clue as to what is going on 
clusterwise.  The load the regionservers put on the heartbeat is mostly a 
duplicate of what the regionserver emits over its metrics channel.  It would be 
good if we did not duplicate this load composition.  It would be good if 
instead the master listened to the regionserver metrics emissions rather than 
get load off the heartbeat (or, RS wrote their load/metrics to a table and 
master read that whenever it wanted to show a page on cluster state).  That 
would make it so the heartbeat now only carries attributes.  But maybe it 
should not carry this even.  Most of the time the attributes do not change so 
it is almost as though they should be written once and then the master would 
consult them when it needs them.  The master could, say, write them to zk into 
the body of the RS ephemeral znode. Master can read them when it joins the 
cluster or when they are updated by the RS.

So, then the heartbeat would seem to have no purpose given zk client in the RS 
is already heartbeating so we could drop it.

But maybe we shouldn't and rather, we should rethread it.  FB are starting to 
go down the path where they are starting to rely on this RS heartbeat rather 
than the ephemeral node in zk and letting master make the call on whether a RS 
should be let go or not.  They are tending this way because the zk ephemeral 
node is dumb -- no logic other than timeout -- and because if master is allowed 
say what is dead and what is alive, it has the opportunity of applying rules; 
e.g. if all regionservers in the cluster are unresponsive all at the same time, 
its probably a network issue so hold tight till the network comes back (as 
opposed to zk which would just expire all sessions and all of the cluster would 
go down).

Hope this helps.


                
> Move coprocessors set out of RegionLoad
> ---------------------------------------
>
>                 Key: HBASE-5258
>                 URL: https://issues.apache.org/jira/browse/HBASE-5258
>             Project: HBase
>          Issue Type: Task
>            Reporter: Ted Yu
>            Priority: Critical
>
> When I worked on HBASE-5256, I revisited the code related to Ser/De of 
> coprocessors set in RegionLoad.
> I think the rationale for embedding coprocessors set is for maximum 
> flexibility where each region can load different coprocessors.
> This flexibility is causing extra cost in the region server to Master 
> communication and increasing the footprint of Master heap.
> Would HServerLoad be a better place for this set ?
> If required, region server should calculate disparity of loaded coprocessors 
> among regions and send report through HServerLoad

--
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

Reply via email to