hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Wang (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-12072) Provide fairness between EC and non-EC recovery tasks.
Date Mon, 31 Jul 2017 23:44:02 GMT

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

Andrew Wang commented on HDFS-12072:
------------------------------------

Thanks for working on this Eddy! A few comments from looking at the patch:

* Prefer if we rename instances of "ReplicateTask" to "ReplicationTask"
* One idea to avoid polling twice, since we know the size of each queue (getNumberOfBlocksToBeReplicated
and getNumberOfBlocksToBeErasureCoded), we can compute a ratio and then multiply.
* Adding a slightly longer explanatory comment would also be good
* Nit: There's also an unused import in the test which will probably be flagged in checkstyle.

> Provide fairness between EC and non-EC recovery tasks.
> ------------------------------------------------------
>
>                 Key: HDFS-12072
>                 URL: https://issues.apache.org/jira/browse/HDFS-12072
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: erasure-coding
>    Affects Versions: 3.0.0-alpha3
>            Reporter: Lei (Eddy) Xu
>            Assignee: Lei (Eddy) Xu
>              Labels: hdfs-ec-3.0-nice-to-have
>         Attachments: HDFS-12072.00.patch
>
>
> In {{DatanodeManager#handleHeartbeat}}, it takes up to {{maxTransfer}} reconstruction
tasks for non-EC, then if the request can not be full filled, it takes more tasks from EC
reconstruction tasks.
> {code}
>     List<BlockTargetPair> pendingList = nodeinfo.getReplicationCommand(
>         maxTransfers);
>     if (pendingList != null) {
>       cmds.add(new BlockCommand(DatanodeProtocol.DNA_TRANSFER, blockPoolId,
>           pendingList));
>       maxTransfers -= pendingList.size();
>     }
>     // check pending erasure coding tasks
>     List<BlockECReconstructionInfo> pendingECList = nodeinfo
>         .getErasureCodeCommand(maxTransfers);
>     if (pendingECList != null) {
>       cmds.add(new BlockECReconstructionCommand(
>           DNA_ERASURE_CODING_RECONSTRUCTION, pendingECList));
>     }
> {code}
> So on a large cluster, if there are large number of constantly non-EC reconstruction
tasks, EC reconstruction tasks do not have a chance to run.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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


Mime
View raw message