hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve Loughran (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HADOOP-15281) Distcp to add no-rename copy option
Date Sat, 16 Feb 2019 16:12:00 GMT

     [ https://issues.apache.org/jira/browse/HADOOP-15281?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Steve Loughran updated HADOOP-15281:
------------------------------------
    Status: Patch Available  (was: Reopened)

Patch as applied to branch-2. Testing S3 Ireland
{code}
[INFO] Running org.apache.hadoop.fs.contract.s3a.ITestS3AContractDistCp
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 124.579 s - in org.apache.hadoop.fs.contract.s3a.ITestS3AContractDistCp
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0
{code}

This moves from the builder API to the setter-based-config, and pulls over most of the branch-3
AbstractContractDistCPTest to ease the cherrypick.
I'm running this through Jenkins, but =0 to actually shipping it

> Distcp to add no-rename copy option
> -----------------------------------
>
>                 Key: HADOOP-15281
>                 URL: https://issues.apache.org/jira/browse/HADOOP-15281
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: tools/distcp
>    Affects Versions: 3.0.0
>            Reporter: Steve Loughran
>            Assignee: Andrew Olson
>            Priority: Major
>             Fix For: 3.3.0, 3.2.1, 3.1.3
>
>         Attachments: HADOOP-15281-001.patch, HADOOP-15281-002.patch, HADOOP-15281-003.patch,
HADOOP-15281-004.patch, HADOOP-15281-branch-2-001.patch
>
>
> Currently Distcp uploads a file by two strategies
> # append parts
> # copy to temp then rename
> option 2 executes the following sequence in {{promoteTmpToTarget}}
> {code}
>     if ((fs.exists(target) && !fs.delete(target, false))
>         || (!fs.exists(target.getParent()) && !fs.mkdirs(target.getParent()))
>         || !fs.rename(tmpTarget, target)) {
>       throw new IOException("Failed to promote tmp-file:" + tmpTarget
>                               + " to: " + target);
>     }
> {code}
> For any object store, that's a lot of HTTP requests; for S3A you are looking at 12+ requests
and an O(data) copy call. 
> This is not a good upload strategy for any store which manifests its output atomically
at the end of the write().
> Proposed: add a switch to write directly to the dest path, which can be supplied as either
a conf option (distcp.direct.write = true) or a CLI option (-direct).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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


Mime
View raw message