[
https://issues.apache.org/jira/browse/HDFS-2202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13072098#comment-13072098
]
Tsz Wo (Nicholas), SZE commented on HDFS-2202:
----------------------------------------------
(clicked 'add' accidenticaly)
- I think the BalancerBandwidthCommand.version is not needed. We have to
change the DatanodeProtocol.versionID in this case.
- You may use for-each statement for the following
{code}
+ for(Iterator<DatanodeDescriptor> it = datanodeMap.values().iterator();
+ it.hasNext();) {
+ DatanodeDescriptor nodeInfo = it.next();
+ nodeInfo.bandwidth = bandwidth;
+ }
{code}
i.e.
{code}
for(DatanodeDescriptor nodeInfo : datanodeMap.values()) {
...
}
{code}
- The initial capacity does not really matter. How about removing it?
{code}
- ArrayList<DatanodeCommand> cmds = new ArrayList<DatanodeCommand>(3);
+ ArrayList<DatanodeCommand> cmds = new ArrayList<DatanodeCommand>(4);
{code}
I think it is better to declare cmds as
{code}
final List<DatanodeCommand> cmds = new ArrayList<DatanodeCommand>();
{code}
- Please add getter/setter and do not use public field
DatanodeDescriptor.bandwidth.
- Please add javadoc (or change comments to javadoc) to all new public
classes/methods/fields.
> 0.23: Changes to balancer bandwidth should not require datanode restart.
> ------------------------------------------------------------------------
>
> Key: HDFS-2202
> URL: https://issues.apache.org/jira/browse/HDFS-2202
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: balancer, data-node
> Affects Versions: 0.20.205.0
> Reporter: Eric Payne
> Assignee: Eric Payne
> Fix For: 0.23.0
>
> Attachments: HDFS-2171.patch, HDFS-2202.patch
>
>
> Currently in order to change the value of the balancer bandwidth
> (dfs.datanode.balance.bandwidthPerSec), the datanode daemon must be restarted.
> The optimal value of the bandwidthPerSec parameter is not always (almost
> never) known at the time of cluster startup, but only once a new node is
> placed in the cluster and balancing is begun. If the balancing is taking too
> long (bandwidthPerSec is too low) or the balancing is taking up too much
> bandwidth (bandwidthPerSec is too high), the cluster must go into a
> "maintenance window" where it is unusable while all of the datanodes are
> bounced. In large clusters of thousands of nodes, this can be a real
> maintenance problem because these "mainenance windows" can take a long time
> and there may have to be several of them while the bandwidthPerSec is
> experimented with and tuned.
> A possible solution to this problem would be to add a -bandwidth parameter to
> the balancer tool. If bandwidth is supplied, pass the value to the datanodes
> via the OP_REPLACE_BLOCK and OP_COPY_BLOCK DataTransferProtocol requests.
> This would make it necessary, however, to change the DataTransferProtocol
> version.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira