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

Konstantin Shvachko commented on HDFS-11384:
--------------------------------------------

Combining my and Vinitha's proposals in a common list here, for further 
discussion.
# Add a parameter to  {{getBlockList(long delay)}}, where {{delay}} is a random 
time within a reasonable interval, which Balancer should wait for before 
sending the {{getBlocks()}} RPC to NN. The delay is only applied once, and set 
to 0 once applied. This looks rather straightforward to me.
# Allocate a reasonable throughput of  {{getBlocks()}} RPCs to NN, and delay 
calls if the quota is exceeded. This is similar to [~benoyantony]'s proposal, 
but allows to precisely  specify how much of NN RPC bandwidth is allocated for 
the Balancer.
# Dispatcher can get the blocks directly from the particular DN instead of NN. 
This makes {{getBlocksList()}} a distributed operation and doesn't impact any 
specific node.
# Dispatcher can fetch the blocks from the Standby NN instead of the active. 
Balancer should be able to tolerate reasonable degree of staleness.

I think (1) is quite easy and can solve immediate problem with bursting RPCs.
I really like Vinitha's (3) obtaining block info directly from DNs. I did not 
look how much harder it is than other approaches.
(2) and (4) are complimentary, that is we can have a limit on Balancer RPC 
bandwidth to NN, but run it against SBN.

> Add option for balancer to disperse getBlocks calls to avoid NameNode's 
> rpc.CallQueueLength spike
> -------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-11384
>                 URL: https://issues.apache.org/jira/browse/HDFS-11384
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: balancer & mover
>    Affects Versions: 2.7.3
>            Reporter: yunjiong zhao
>            Assignee: yunjiong zhao
>         Attachments: balancer.day.png, balancer.week.png, 
> HDFS-11384.001.patch, HDFS-11384.002.patch
>
>
> When running balancer on hadoop cluster which have more than 3000 Datanodes 
> will cause NameNode's rpc.CallQueueLength spike. We observed this situation 
> could cause Hbase cluster failure due to RegionServer's WAL timeout.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to