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

Steve Loughran commented on HADOOP-15191:
-----------------------------------------

HADOOP-15191 patch 003

* fix checkstyle
* add "op_bulk_delete" to the counters
* S3A Distcp test to verify that the bulk delete operation was invoked, so 
verifying that this path works
* ITestS3ABulkOperations tweaked to handle tests which delete a directory path, 
to behave differenty under S3Guard. The docs for the (internal) bulk API say 
'all entries must be files'';  S3Guard gets inconsistent if you delete a path 
which has a child entry, whereas S3 classic ignores the request (and if HDFS 
supported this, would fail with an IOE).

For a public/stable API, we'd need to worry about that problem "deletion of a 
parent entry"; for s3guard a preflight check of every file not being a dir 
would be the strategy. Not free, and you'd have to decide what to do: ignore vs 
reject. Here, because distcp is only deleting files, there's no problem.

Testing: S3 US East, scale +-S3guard, +-Auth. Also tested Azure's distcp test, 
to verify I haven't broken it in my changes (it shouldn't, as it now adds a new 
operation. But I wanted to make sure I hadn't found a bug there either)

There are some aspects of s3Guard integration here which I think could be 
improved, but that's something to tune once I do the handling of partial delete 
failure and S3guard, which is the real issue and which matters much more than 
rename(). Otherwise, I think this is ready for people to look at

+[~sanjay.radia]

> Add Private/Unstable BulkDelete operations to supporting object stores for 
> DistCP
> ---------------------------------------------------------------------------------
>
>                 Key: HADOOP-15191
>                 URL: https://issues.apache.org/jira/browse/HADOOP-15191
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: fs/s3, tools/distcp
>    Affects Versions: 2.9.0
>            Reporter: Steve Loughran
>            Assignee: Steve Loughran
>            Priority: Major
>         Attachments: HADOOP-15191-001.patch, HADOOP-15191-002.patch, 
> HADOOP-15191-003.patch
>
>
> Large scale DistCP with the -delete option doesn't finish in a viable time 
> because of the final CopyCommitter doing a 1 by 1 delete of all missing 
> files. This isn't randomized (the list is sorted), and it's throttled by AWS.
> If bulk deletion of files was exposed as an API, distCP would do 1/1000 of 
> the REST calls, so not get throttled.
> Proposed: add an initially private/unstable interface for stores, 
> {{BulkDelete}} which declares a page size and offers a 
> {{bulkDelete(List<Path>)}} operation for the bulk deletion.



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

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

Reply via email to