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

Ming Ma commented on HDFS-11412:
--------------------------------

Thanks [~manojg].

* Regarding whether to use default replication factor or max replication 
factor, do you care about the following use case? default == 3, max = 30. Block 
A have large replication factor 30 and would like to keep at least 20 live 
replicas around during maintenance. Then put 20 nodes with replicas of Block A 
into maintenance at the same time. To make sure at least 20 live replicas after 
maintenance, the system need to honor minReplicationToBeInMaintenance == 20. 
* Impact on {{getExpectedLiveRedundancyNum}} calculation. Set 
minReplicationToBeInMaintenance to 3. Block B's replication factor is 2. Put 
one of its replicas into maintenance. Inside function 
{{getExpectedLiveRedundancyNum}}, {{Math.max(expectedRedundancy - 
numberReplicas.maintenanceReplicas(), getMinReplicationToBeInMaintenance())}} 
== 3.  Ideally the function should return 2.

> Maintenance minimum replication config value allowable range should be {0 - 
> DefaultReplication}
> -----------------------------------------------------------------------------------------------
>
>                 Key: HDFS-11412
>                 URL: https://issues.apache.org/jira/browse/HDFS-11412
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: datanode, namenode
>    Affects Versions: 3.0.0-alpha1
>            Reporter: Manoj Govindassamy
>            Assignee: Manoj Govindassamy
>         Attachments: HDFS-11412.01.patch
>
>
> Currently the allowed value range for Maintenance Min Replication 
> {{dfs.namenode.maintenance.replication.min}} is 0 to 
> {{dfs.namenode.replication.min}} (default=1). Users wanting not to affect the 
> performance of the cluster would wish to have the Maintenance Min Replication 
> number greater than 1, say 2. In the current design, it is possible to have 
> this Maintenance Min Replication configuration, but only after changing the 
> NameNode level Block Min Replication to 2, and which could slowdown the 
> overall latency for client writes.
> Technically speaking we should be allowing Maintenance Min Replication to be 
> in range 0 to dfs.replication.max.  
> * There is always config value of 0 for users not wanting any 
> availability/performance during maintenance. 
> * And, performance centric workloads can still get maintenance done without 
> major disruptions by having a bigger Maintenance Min Replication. Setting the 
> upper limit as dfs.replication.max could be an overkill as it could trigger 
> re-replication which Maintenance State is trying to avoid. So, we could allow 
> the {{dfs.namenode.maintenance.replication.min}} in the range {{0 to 
> dfs.replication}}
> {noformat}
>     if (minMaintenanceR < 0) {
>       throw new IOException("Unexpected configuration parameters: "
>           + DFSConfigKeys.DFS_NAMENODE_MAINTENANCE_REPLICATION_MIN_KEY
>           + " = " + minMaintenanceR + " < 0");
>     }
>     if (minMaintenanceR > minR) {
>       throw new IOException("Unexpected configuration parameters: "
>           + DFSConfigKeys.DFS_NAMENODE_MAINTENANCE_REPLICATION_MIN_KEY
>           + " = " + minMaintenanceR + " > "
>           + DFSConfigKeys.DFS_NAMENODE_REPLICATION_MIN_KEY
>           + " = " + minR);
> {noformat}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to