[
https://issues.apache.org/jira/browse/MAPREDUCE-972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12767579#action_12767579
]
Chris Douglas commented on MAPREDUCE-972:
-----------------------------------------
bq. Isn't the FileSystem API mid-rewrite right now in HADOOP-6223? So now might
actually be the rare time to consider something like this. It's unfortunate
that Rename.Options is an Enum, so it'd be hard to add a progress function
there without changing that. Perhaps Rename.Options.OVERWRITE could still be a
constant, but Rename.Options#createProgress(Progressible) could return a
subclass of Rename.Options that wraps a Progressible or somesuch. I don't mean
to push this approach, rather just to question whether it should be ruled out
completely. If it seems reasonable for file rename implementations to take a
long time, then adding a progress callback might be a reasonable approach.
I agree. Long-running renames should be considered/debated in the design of
FileContext/AFS, particularly since we often use rename to promote output.
Adding a cstr for FileContext that takes a Progressable, then adding a
Progressable to all the AFS APIs would probably work. The Util inner class
could also be created with it, so listStatus and copy could also update
progress. Most implementations can ignore it, but that would at least push the
workaround for S3 into the right layer.
However, for this issue, patching either the old or new API is a non-starter.
DistCp uses old APIs, and I'd much rather upgrade it and address the more
general Progressable questions in other issues. Approaching all that in a
single issue, particularly one devoted to a timeout in S3, imports a lot of
baggage. Interesting, important baggage, but this is only a use case in that
broader context.
bq. Using a single timeout value for all operations makes program execution
overall considerably less efficient than it should be. Writes and renames in
distcp can expect different running times; we should treat them this way.
Every file is copied twice. I'm not sure a long task timeout leaves too much
performance on the table. Your point about tuning timeouts for particular
operations is taken, but the payoff is too low for the complexity this adds.
Both this and raising the task timeout for the job are hacks, but as Doug
points out: we're going to have to solve this in general, too. The task timeout
is a hack we have and know.
bq. Looking at FilterFileSystem, I think that's the most general and
non-invasive solution.
[Yes|https://issues.apache.org/jira/browse/MAPREDUCE-972?focusedCommentId=12767161#action_12767161],
that would be the cleanest place to add a thread, but it's still not much of a
win over bumping the task timeout for the job. Updating the DistCp guide with
notes for S3 users is an unambiguous win.
> distcp can timeout during rename operation to s3
> ------------------------------------------------
>
> Key: MAPREDUCE-972
> URL: https://issues.apache.org/jira/browse/MAPREDUCE-972
> Project: Hadoop Map/Reduce
> Issue Type: Bug
> Components: distcp
> Affects Versions: 0.20.1
> Reporter: Aaron Kimball
> Assignee: Aaron Kimball
> Attachments: MAPREDUCE-972.2.patch, MAPREDUCE-972.3.patch,
> MAPREDUCE-972.4.patch, MAPREDUCE-972.5.patch, MAPREDUCE-972.patch
>
>
> rename() in S3 is implemented as copy + delete. The S3 copy operation can
> perform very slowly, which may cause task timeout.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.