[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-09-05 Thread Steve Loughran (Jira)


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

Steve Loughran commented on HADOOP-16430:
-

committed -thanks for the review. Yes, I like a lot of the GH review mechanism, 
though I still also like the ability to do a quick summary. Sometimes I feel GH 
is more optimised for reviewing details than the overall patch. And once you 
start rebasing longer-lived patches, things get tricky.

Have a play with the vs.code github integration if you haven't -you can review 
the patch with all the code locally checked out, adding comments in the IDE. 
This is very slick, especially for acting on people's suggestions.

> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Affects Versions: 3.2.0, 3.3.0
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Major
> Attachments: Screenshot 2019-07-16 at 22.08.31.png
>
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make sure these 
> aren't going to trigger failures



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

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



[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-09-05 Thread Hudson (Jira)


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

Hudson commented on HADOOP-16430:
-

FAILURE: Integrated in Jenkins build Hadoop-trunk-Commit #17231 (See 
[https://builds.apache.org/job/Hadoop-trunk-Commit/17231/])
HADOOP-16430. S3AFilesystem.delete to incrementally update s3guard with 
(stevel: rev 511df1e837b19ccb9271520589452d82d50ac69d)
* (edit) 
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractContractGetFileStatusTest.java
* (edit) 
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java
* (edit) 
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/impl/FutureIOSupport.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/DynamoDBMetadataStore.java
* (add) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/ExecutingStoreOperation.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/StoreContext.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3AMetadataPersistenceException.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/MockS3AFileSystem.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/impl/ITestPartialRenamesDeletes.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/scale/ITestS3ADeleteManyFiles.java
* (add) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/DeleteOperation.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/Listing.java
* (add) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/InternalIterators.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/scale/S3AScaleTestBase.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/InconsistentAmazonS3Client.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/DelayedUpdateRenameTracker.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/NullMetadataStore.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3AFailureHandling.java
* (delete) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/InternalConstants.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/s3guard/ITestDynamoDBMetadataStoreScale.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/WriteOperationHelper.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/MetadataStore.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/select/InternalSelectConstants.java
* (edit) 
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/FileContextURIBase.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/MultiObjectDeleteSupport.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3GuardOutOfBandOperations.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileStatus.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ALocatedFileStatus.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/scale/AbstractITestS3AMetadataStoreScale.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/commit/CommitOperations.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/InternalConstants.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/s3guard/MetadataStoreTestBase.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/contract/s3a/ITestS3AContractRootDir.java
* (add) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/OperationCallbacks.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/S3Guard.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3GuardListConsistency.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/LocalMetadataStore.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/impl/TestPartialDeleteFailures.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/S3ATestConstants.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/RenameOperation.java
* (edit) 
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/commit/ITestCommitOperations.java
* (edit) 
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/ProgressiveRenameTracker.j

[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-09-04 Thread Aaron Fabbri (Jira)


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

Aaron Fabbri commented on HADOOP-16430:
---

Latest PR commits reviewed (+1). Aside: This is nice not having to run diff on 
a diff to just see what changed. Nice to be able to follow your commit history 
in the PR.

> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Affects Versions: 3.2.0, 3.3.0
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Major
> Attachments: Screenshot 2019-07-16 at 22.08.31.png
>
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make sure these 
> aren't going to trigger failures



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

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



[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-08-29 Thread Aaron Fabbri (Jira)


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

Aaron Fabbri commented on HADOOP-16430:
---

+1 LGTM after your clarifying comments.. Thanks for the contribution.

> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Affects Versions: 3.2.0, 3.3.0
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Major
> Attachments: Screenshot 2019-07-16 at 22.08.31.png
>
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make sure these 
> aren't going to trigger failures



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

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



[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-08-28 Thread Aaron Fabbri (Jira)


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

Aaron Fabbri commented on HADOOP-16430:
---

Thanks for the work on this. Looks pretty good. Made a couple of comments on 
the PR.

> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Affects Versions: 3.2.0, 3.3.0
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Major
> Attachments: Screenshot 2019-07-16 at 22.08.31.png
>
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make sure these 
> aren't going to trigger failures



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

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



[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-08-23 Thread Steve Loughran (Jira)


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

Steve Loughran commented on HADOOP-16430:
-

Highlight: coding this has thrown up an issue with the current implementation.
the recursive delete only asks S3 for files, not DDB.

This ensures that incomplete DDB stores are not a problem, so that deletion 
does mostly recover from any problems. However, it relies on LIST being 
complete, which we know is untrue as it is eventually consistent.

Proposed: after deleting all files, we do a recursive list of what is left in 
S3Guard and delete those too. That way files we know about but which the list 
missed will still get cleaned up.

> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Affects Versions: 3.2.0, 3.3.0
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Major
> Attachments: Screenshot 2019-07-16 at 22.08.31.png
>
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make sure these 
> aren't going to trigger failures



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

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



[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-07-16 Thread Steve Loughran (JIRA)


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

Steve Loughran commented on HADOOP-16430:
-

Attached: screenshot of on-demand DDB load during a test run. IOPs goes up to 
300 for a read, write to ~250 but for slightly longer. DDB shows 3ms per 
operation. 

Delete doesn't do batches; it just goes through file-by-file. If we were 
confident that you did see a bulk write speedup (probably uses up fewer HTTPS 
connections at the very least), it could be considered/justlfied

> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Major
> Attachments: Screenshot 2019-07-16 at 22.08.31.png
>
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make sure these 
> aren't going to trigger failures



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

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



[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-07-16 Thread Steve Loughran (JIRA)


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

Steve Loughran commented on HADOOP-16430:
-

h3. s3guard + local + single file delete

{code}
Starting: Rename s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/src 
to s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final
2019-07-16 20:53:49,226 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:close(87)) - Rename 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/src to 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final: duration 
9:39.621s
2019-07-16 20:53:49,227 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles 
(ITestS3ADeleteManyFiles.java:testBulkRenameAndDelete(78)) - Effective rename 
bandwidth 0.000146 MB/s
2019-07-16 20:57:31,942 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:(72)) - Starting: Delete 
subtree s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final
2019-07-16 21:03:58,417 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:close(87)) - Delete subtree 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final: duration 
6:26.475s
2019-07-16 21:03:58,417 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles 
(ITestS3ADeleteManyFiles.java:testBulkRenameAndDelete(101)) - Timer per object 
deletion 38.648592 milliseconds
2019-07-16 21:03:59,556 [teardown] INFO  contract.AbstractFSContractTestBase 
(AbstractFSContractTestBase.java:describe(255)) - closing file system
{code}

h3. s3guard + local + bulk delete

{code}
2019-07-16 21:09:12,297 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:(72)) - Starting: Rename 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/src to 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final
2019-07-16 21:12:54,386 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:close(87)) - Rename 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/src to 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final: duration 
3:42.089s
2019-07-16 21:12:54,386 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles 
(ITestS3ADeleteManyFiles.java:testBulkRenameAndDelete(78)) - Effective rename 
bandwidth 0.000382 MB/s
2019-07-16 21:16:43,691 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:(72)) - Starting: Delete 
subtree s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final
2019-07-16 21:17:19,875 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:close(87)) - Delete subtree 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final: duration 
0:36.183s
2019-07-16 21:17:19,875 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles 
(ITestS3ADeleteManyFiles.java:testBulkRenameAndDelete(101)) - Timer per object 
deletion 3.618443 milliseconds
{code}

So again, 10x speedup in delete time during tree delete. For rename, the 
differences are smaller; and even with nearly empty files, the overhead of the 
copy overwhelms that of the delete.

If we really wanted to speed things up, we could try doing the single/bulk 
delete call async, so that for each max-of-5K file list, we can spin off up to 
5 delete calls and wait for them to finish. At the same time, this'd lead to a 
massive spike in parallelised DDB writes; though as they'd go through the same 
pool it'd be limited by pool capacity

> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Major
> Attachments: Screenshot 2019-07-16 at 22.08.31.png
>
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make 

[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-07-16 Thread Steve Loughran (JIRA)


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

Steve Loughran commented on HADOOP-16430:
-

For the curious

h3. single file delete
{code}
2019-07-16 17:40:27,487 [JUnit-testBulkRenameAndDelete] INFO  
impl.ITestPartialRenamesDeletes (DurationInfo.java:(72)) - Starting: 
Creating 1 files
2019-07-16 17:42:02,633 [JUnit-testBulkRenameAndDelete] INFO  
impl.ITestPartialRenamesDeletes (DurationInfo.java:close(87)) - Creating 1 
files: duration 1:35.146s
2019-07-16 17:45:01,905 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:(72)) - Starting: Rename 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/src to 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final
2019-07-16 17:54:40,158 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:close(87)) - Rename 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/src to 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final: duration 
9:38.253s
2019-07-16 17:54:40,162 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles 
(ITestS3ADeleteManyFiles.java:testBulkRenameAndDelete(78)) - Effective rename 
bandwidth 0.000147 MB/s
2019-07-16 17:58:17,999 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:(72)) - Starting: Delete 
subtree s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final
2019-07-16 18:04:49,074 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:close(87)) - Delete subtree 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final: duration 
6:31.075s
2019-07-16 18:04:49,074 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles 
(ITestS3ADeleteManyFiles.java:testBulkRenameAndDelete(101)) - Nanoseconds per 
object deleted 39108 microseconds
2019-07-16 18:04:49,684 [teardown] INFO  contract.AbstractFSContractTestBase 
(AbstractFSContractTestBase.java:describe(255)) - closing file system
{code}

h3. Multifile delete
{code}

2019-07-16 18:04:50,625 [JUnit-testBulkRenameAndDelete] INFO  
impl.ITestPartialRenamesDeletes (DurationInfo.java:(72)) - Starting: 
Creating 1 files
2019-07-16 18:06:33,128 [JUnit-testBulkRenameAndDelete] INFO  
impl.ITestPartialRenamesDeletes (DurationInfo.java:close(87)) - Creating 1 
files: duration 1:42.503s
2019-07-16 18:09:35,521 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:(72)) - Starting: Rename 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/src to 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final
2019-07-16 18:13:12,657 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:close(87)) - Rename 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/src to 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final: duration 
3:37.136s
2019-07-16 18:13:12,658 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles 
(ITestS3ADeleteManyFiles.java:testBulkRenameAndDelete(78)) - Effective rename 
bandwidth 0.000390 MB/s
2019-07-16 18:17:09,695 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:(72)) - Starting: Delete 
subtree s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final
2019-07-16 18:17:42,863 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles (DurationInfo.java:close(87)) - Delete subtree 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final: duration 
0:33.168s
2019-07-16 18:17:42,864 [JUnit-testBulkRenameAndDelete] INFO  
scale.ITestS3ADeleteManyFiles 
(ITestS3ADeleteManyFiles.java:testBulkRenameAndDelete(101)) - Nanoseconds per 
object deleted 3316 microseconds
2019-07-16 18:17:43,588 [teardown] INFO  contract.AbstractFSContractTestBase 
(AbstractFSContractTestBase.java:describe(255)) - closing file system
{code}

The bulk rename took 9:38 on single delete, 3:37 on multidelete, ~3x longer. 

On the delete alone, multifile delete: 0:33. Single delete, 6:31 -over 10x 
slower.

At the same time *only* 10x slower, even though we are now pushing out 1000 
entries to a delete in a single file.

> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Major
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to dele

[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-07-16 Thread Steve Loughran (JIRA)


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

Steve Loughran commented on HADOOP-16430:
-

update: the patch. Use of keyToPath over keyToQualifiedPath

> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Major
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make sure these 
> aren't going to trigger failures



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

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



[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-07-16 Thread Steve Loughran (JIRA)


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

Steve Loughran commented on HADOOP-16430:
-

Managed to create an NPE in test teardown here  in a test run:  
-Dit.test=ITestS3ADeleteManyFiles  -Dscale -Ds3guard -Ddynamo

I'm assuming this is my new patch for now, but it could be a sign of something 
which has been lurking for a bit and its only with one of us bumping up the 
scale count it surfaces.

{code}

  
scale.test.operation.count
2000
  
{code}
{code}
Delete subtree 
s3a://hwdev-steve-ireland-new/test/testBulkRenameAndDelete/final: duration 
0:01.605s
2019-07-16 16:52:14,179 [teardown] ERROR contract.ContractTestUtils 
(ContractTestUtils.java:cleanup(380)) - Error deleting in TEARDOWN - /test: 
java.lang.NullPointerException: Path 
/test/testBulkRenameAndDelete/final/file-1899 missing scheme
java.lang.NullPointerException: Path 
/test/testBulkRenameAndDelete/final/file-1899 missing scheme
at 
com.google.common.base.Preconditions.checkNotNull(Preconditions.java:980)
at 
org.apache.hadoop.fs.s3a.s3guard.DynamoDBMetadataStore.checkPath(DynamoDBMetadataStore.java:2092)
at 
org.apache.hadoop.fs.s3a.s3guard.DynamoDBMetadataStore.innerDelete(DynamoDBMetadataStore.java:577)
at 
org.apache.hadoop.fs.s3a.s3guard.DynamoDBMetadataStore.lambda$deleteEntries$2(DynamoDBMetadataStore.java:676)
at 
org.apache.hadoop.fs.s3a.impl.CallableSupplier.get(CallableSupplier.java:61)
at 
java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
at 
org.apache.hadoop.util.SemaphoredDelegatingExecutor$RunnableWithPermitRelease.run(SemaphoredDelegatingExecutor.java:197)
at 
org.apache.hadoop.util.SemaphoredDelegatingExecutor$RunnableWithPermitRelease.run(SemaphoredDelegatingExecutor.java:197)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
2019-07-16 16:52:14,182 [teardown] INFO  contract.AbstractFSContractTestBase 
(AbstractFSContractTestBase.java:describe(255)) - closing file system


> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Reporter: Steve Loughran
>Priority: Major
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make sure these 
> aren't going to trigger failures



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

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



[jira] [Commented] (HADOOP-16430) S3AFilesystem.delete to incrementally update s3guard with deletions

2019-07-16 Thread Steve Loughran (JIRA)


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

Steve Loughran commented on HADOOP-16430:
-

This is hard to do efficiently without that same tracking (or more) of the 
rename call.

Specifically: currently a delete(path) will update the parent dir. But if we 
know the delete is taking place under a directory tree, then the only 
directories which we know are being deleted are those which are not under the 
destination directory.

This leads to a design of
# create ancestor state context with dest dir = base dir of delete
# add a delete(list paths, state) operation

and then for all entries in the path list
 * Put a tombstone if they are a file
 * Directory (how to check?): also put a tombstone
 * Only update the parent dir if the path being changed is that of the base 
directory of the delete
* At the end of the delete, finish off by making sure there's a tombstone in 
each dir and no child which isn't.

Like I warned: more complex. Not much smaller than that of rename. In fact, the 
operation is essentially that of Metastore.move() as used in the 
ProgressiveRenameTracker. 



> S3AFilesystem.delete to incrementally update s3guard with deletions
> ---
>
> Key: HADOOP-16430
> URL: https://issues.apache.org/jira/browse/HADOOP-16430
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: fs/s3
>Reporter: Steve Loughran
>Priority: Major
>
> Currently S3AFilesystem.delete() only updates the delete at the end of a 
> paged delete operation. This makes it slow when there are many thousands of 
> files to delete ,and increases the window of vulnerability to failures
> Preferred
> * after every bulk DELETE call is issued to S3, queue the (async) delete of 
> all entries in that post.
> * at the end of the delete, await the completion of these operations.
> * inside S3AFS, also do the delete across threads, so that different HTTPS 
> connections can be used.
> This should maximise DDB throughput against tables which aren't IO limited.
> When executed against small IOP limited tables, the parallel DDB DELETE 
> batches will trigger a lot of throttling events; we should make sure these 
> aren't going to trigger failures



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

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