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

Steve Loughran commented on HADOOP-15384:
-----------------------------------------

Patch 001: passes thread count down, logs it, and splits time for reporting 
listing into source and dest

This has tangible improvements when using object stores as a destination, 
though the mimicking of directories trees can still make distcp to some remote 
stores (s3, swift) still tangibly awful. This is all you can do short of a 
complete rewrite. Which I don't intend to propose for the following reason: 
distcp is a complex and critical part of too many people's workflows.

Testing: ran {{ITestS3AContractDistCp}} against S3 Ireland. No new tests, as 
the distcp contract tests were already setting num threads: I have set the 
thread count to 40 though, that being the maximum.

Here's the output of the relevant phase of 
{{testUpdateDeepDirectoryStructureToRemote}}

{code}
2018-06-25 19:35:18,047 [Thread-139] INFO  mapred.CopyCommitter 
(CopyCommitter.java:deleteMissing(387)) - -delete option is enabled. About to 
remove entries from target that are missing in source
2018-06-25 19:35:18,062 [Thread-139] INFO  mapred.CopyCommitter 
(CopyCommitter.java:deleteMissing(396)) - Source listing completed in 
0:00:00.015
2018-06-25 19:35:18,063 [Thread-139] INFO  mapred.CopyCommitter 
(CopyCommitter.java:listTargetFiles(554)) - Scanning destination directory 
s3a://hwdev-steve-ireland-new/test/ITestS3AContractDistCp/testUpdateDeepDirectoryStructureToRemote/remote/DELAY_LISTING_ME/outputDir/inputDir
 with thread count: 40
2018-06-25 19:35:19,872 [Thread-139] INFO  tools.SimpleCopyListing 
(SimpleCopyListing.java:printStats(608)) - Paths (files+dirs) cnt = 11; dirCnt 
= 5
2018-06-25 19:35:19,872 [Thread-139] INFO  tools.SimpleCopyListing 
(SimpleCopyListing.java:doBuildListing(402)) - Build file listing completed.
2018-06-25 19:35:19,886 [Thread-139] INFO  tools.DistCp 
(CopyListing.java:buildListing(94)) - Number of paths in the copy list: 11
2018-06-25 19:35:19,899 [Thread-139] INFO  tools.DistCp 
(CopyListing.java:buildListing(94)) - Number of paths in the copy list: 11
2018-06-25 19:35:19,913 [Thread-139] INFO  mapred.CopyCommitter 
(CopyCommitter.java:deleteMissing(415)) - Destination listing completed in 
0:00:01.851
{code}

And for {{ITestAzureNativeContractDistCp}}
{code}
2018-06-25 20:11:44,992 INFO  [Thread-147]: mapred.LocalJobRunner 
(LocalJobRunner.java:runTasks(486)) - map task executor complete.
2018-06-25 20:11:44,992 INFO  [Thread-147]: mapred.CopyCommitter 
(CopyCommitter.java:concatFileChunks(210)) - concat file chunks ...
2018-06-25 20:11:45,405 INFO  [Thread-147]: mapred.CopyCommitter 
(CopyCommitter.java:deleteMissing(387)) - -delete option is enabled. About to 
remove entries from target that are missing in source
2018-06-25 20:11:45,418 INFO  [Thread-147]: mapred.CopyCommitter 
(CopyCommitter.java:deleteMissing(396)) - Source listing completed in 
0:00:00.013
2018-06-25 20:11:45,419 INFO  [Thread-147]: mapred.CopyCommitter 
(CopyCommitter.java:listTargetFiles(554)) - Scanning destination directory 
wasb://[email protected]/test/ITestAzureNativeContractDistCp/testUpdateDeepDirectoryStructureToRemote/remote/outputDir/inputDir
 with thread count: 40
2018-06-25 20:11:46,338 INFO  [Thread-147]: tools.SimpleCopyListing 
(SimpleCopyListing.java:printStats(608)) - Paths (files+dirs) cnt = 11; dirCnt 
= 5
2018-06-25 20:11:46,338 INFO  [Thread-147]: tools.SimpleCopyListing 
(SimpleCopyListing.java:doBuildListing(402)) - Build file listing completed.
2018-06-25 20:11:46,351 INFO  [Thread-147]: tools.DistCp 
(CopyListing.java:buildListing(94)) - Number of paths in the copy list: 11
2018-06-25 20:11:46,365 INFO  [Thread-147]: tools.DistCp 
(CopyListing.java:buildListing(94)) - Number of paths in the copy list: 11
2018-06-25 20:11:46,377 INFO  [Thread-147]: mapred.CopyCommitter 
(CopyCommitter.java:deleteMissing(415)) - Destination listing completed in 
0:00:00.959
{code}

A small bird fell out the sky, deceased, during the S3A run. It didn't happen 
on a rerun —I'm assuming unrelated. If more wild animals die during S3 
integration tests then it'd be something to consider a significant regression 
in the AWS SDK


+ [~ehiggs], [~fabbri]


> distcp numListstatusThreads option doesn't get to -delete scan
> --------------------------------------------------------------
>
>                 Key: HADOOP-15384
>                 URL: https://issues.apache.org/jira/browse/HADOOP-15384
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: tools/distcp
>    Affects Versions: 3.1.0
>            Reporter: Steve Loughran
>            Assignee: Steve Loughran
>            Priority: Major
>         Attachments: HADOOP-15384-001.patch
>
>
> The distcp {{numListstatusThreads}} option isn't used when configuring the 
> GlobbedCopyListing used in {{CopyComitter.deleteMissing()}}
> This means that for large scans of object stores, performance is 
> significantly worse.
> Fix: pass the option down from the task conf



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

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

Reply via email to