Skip to content

Conversation

@steveloughran
Copy link
Contributor

This patch adds awareness of on-demand tables; it does not support
creating them as a new SDK upgrade is needed for that. This patch
is one which can be backported without the consequences of such an update.

  • The diagnostics map includes the billing mode (as inferred from IO capacities)
  • Set capacity fails fast (and always).
  • The documentation discusses the mode, argues for it over autoscaling
  • Example output of bucket-info updated
  • Test that if the table is on-demand, set-capacity will fail.
  • If table is on-demand, The dynamo db scale tests are disabled. There's nothing to prove.

Change-Id: I77b7a6b593a2cd805376ca24d68b06bde75589c5

This patch adds awareness of on-demand tables; it does not support
creating them as a new SDK upgrade is needed for that. This patch
is one which can be backported without the consequences of such an update.

* The diagnostics map includes the billing mode (as inferred from IO capacities)
* Set capacity fails fast (and always).
* The documentation discusses the mode, argues for it over autoscaling
* Example output of bucket-info updated
* Test that if the table is on-demand, set-capacity will fail.
* If table is on-demand, The dynamo db scale tests are disabled. There's nothing to prove.

Change-Id: I77b7a6b593a2cd805376ca24d68b06bde75589c5
@steveloughran
Copy link
Contributor Author

steveloughran commented Mar 26, 2019

Tested: S3a ireland with s3guard _ dynamoDB. One failure, which I am not sure if/how it is related to on-demand tables.

guard.ITestS3GuardToolDynamoDB
[ERROR] testBucketInfoUnguarded(org.apache.hadoop.fs.s3a.s3guard.ITestS3GuardToolDynamoDB)  Time elapsed: 1.318 s  <<< ERROR!
java.io.FileNotFoundException: DynamoDB table 'testBucketInfoUnguarded-b48b3cd0-f21c-4973-9f9e-1e0861f44478' does not exist in region eu-west-1; auto-creation is turned off
	at org.apache.hadoop.fs.s3a.s3guard.DynamoDBMetadataStore.initTable(DynamoDBMetadataStore.java:1243)
	at org.apache.hadoop.fs.s3a.s3guard.DynamoDBMetadataStore.initialize(DynamoDBMetadataStore.java:374)
	at org.apache.hadoop.fs.s3a.s3guard.S3Guard.getMetadataStore(S3Guard.java:99)
	at org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:394)
	at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3324)
	at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:136)
	at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3373)
	at org.apache.hadoop.fs.FileSystem$Cache.getUnique(FileSystem.java:3347)
	at org.apache.hadoop.fs.FileSystem.newInstance(FileSystem.java:544)
	at org.apache.hadoop.fs.s3a.s3guard.S3GuardTool$BucketInfo.run(S3GuardTool.java:1140)
	at org.apache.hadoop.fs.s3a.s3guard.S3GuardToolTestHelper.exec(S3GuardToolTestHelper.java:79)
	at org.apache.hadoop.fs.s3a.s3guard.S3GuardToolTestHelper.exec(S3GuardToolTestHelper.java:51)
	at org.apache.hadoop.fs.s3a.s3guard.AbstractS3GuardToolTestBase.testBucketInfoUnguarded(AbstractS3GuardToolTestBase.java:341)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:298)
	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:292)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.lang.Thread.run(Thread.java:745)
Caused by: com.amazonaws.services.dynamodbv2.model.ResourceNotFoundException: Requested resource not found: Table: testBucketInfoUnguarded-b48b3cd0-f21c-4973-9f9e-1e0861f44478 not found (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: 8A42F39OH2IASKST147L6U36Q7VV4KQNSO5AEMVJF66Q9ASUAAJG)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1640)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1058)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
	at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
	at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:3443)
	at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:3419)
	at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeDescribeTable(AmazonDynamoDBClient.java:1660)
	at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.describeTable(AmazonDynamoDBClient.java:1635)
	at com.amazonaws.services.dynamodbv2.document.Table.describe(Table.java:137)
	at org.apache.hadoop.fs.s3a.s3guard.DynamoDBMetadataStore.initTable(DynamoDBMetadataStore.java:1201)
	... 27 more

bills when it is not.

Before DynamoDB On-Demand was introduced, autoscaling was the sole form
of dynamic scaling.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

whitespace:end of line

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
0 reexec 26 Docker mode activated.
_ Prechecks _
+1 @author 0 The patch does not contain any @author tags.
+1 test4tests 0 The patch appears to include 3 new or modified test files.
_ trunk Compile Tests _
+1 mvninstall 996 trunk passed
+1 compile 33 trunk passed
+1 checkstyle 24 trunk passed
+1 mvnsite 37 trunk passed
+1 shadedclient 727 branch has no errors when building and testing our client artifacts.
+1 findbugs 44 trunk passed
+1 javadoc 25 trunk passed
_ Patch Compile Tests _
+1 mvninstall 30 the patch passed
+1 compile 28 the patch passed
+1 javac 28 the patch passed
-0 checkstyle 18 hadoop-tools/hadoop-aws: The patch generated 2 new + 17 unchanged - 0 fixed = 19 total (was 17)
+1 mvnsite 31 the patch passed
-1 whitespace 0 The patch has 1 line(s) that end in whitespace. Use git apply --whitespace=fix <<patch_file>>. Refer https://git-scm.com/docs/git-apply
+1 shadedclient 744 patch has no errors when building and testing our client artifacts.
+1 findbugs 47 the patch passed
+1 javadoc 23 the patch passed
_ Other Tests _
+1 unit 273 hadoop-aws in the patch passed.
+1 asflicense 28 The patch does not generate ASF License warnings.
3215
Subsystem Report/Notes
Docker Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-647/1/artifact/out/Dockerfile
GITHUB PR #647
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle
uname Linux 67573c9c00b7 4.4.0-139-generic #165-Ubuntu SMP Wed Oct 24 10:58:50 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality personality/hadoop.sh
git revision trunk / ce4bafd
maven version: Apache Maven 3.3.9
Default Java 1.8.0_191
findbugs v3.1.0-RC1
checkstyle https://builds.apache.org/job/hadoop-multibranch/job/PR-647/1/artifact/out/diff-checkstyle-hadoop-tools_hadoop-aws.txt
whitespace https://builds.apache.org/job/hadoop-multibranch/job/PR-647/1/artifact/out/whitespace-eol.txt
Test Results https://builds.apache.org/job/hadoop-multibranch/job/PR-647/1/testReport/
Max. process+thread count 411 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-aws U: hadoop-tools/hadoop-aws
Console output https://builds.apache.org/job/hadoop-multibranch/job/PR-647/1/console
Powered by Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

retry counts and an interval which allow for the clients to cope with
some throttling, but not to time out other applications.
This is why the DynamoDB On-Demand appears to be a better option for
workloads with Hadoop, Spark, Hive and othe rapplications.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo, "other applications"

workloads with Hadoop, Spark, Hive and othe rapplications.

If autoscaling is to be used, we recommend experimenting with the option,
based on usage information collected from previous days, and and choosing a
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo, "and and"

bills when it is not.

Before DynamoDB On-Demand was introduced, autoscaling was the sole form
of dynamic scaling.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

whitespace:end of line

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
0 reexec 28 Docker mode activated.
_ Prechecks _
+1 @author 0 The patch does not contain any @author tags.
+1 test4tests 0 The patch appears to include 3 new or modified test files.
_ trunk Compile Tests _
+1 mvninstall 1038 trunk passed
+1 compile 35 trunk passed
+1 checkstyle 25 trunk passed
+1 mvnsite 37 trunk passed
+1 shadedclient 732 branch has no errors when building and testing our client artifacts.
+1 findbugs 42 trunk passed
+1 javadoc 26 trunk passed
_ Patch Compile Tests _
+1 mvninstall 31 the patch passed
+1 compile 28 the patch passed
+1 javac 27 the patch passed
-0 checkstyle 19 hadoop-tools/hadoop-aws: The patch generated 2 new + 17 unchanged - 0 fixed = 19 total (was 17)
+1 mvnsite 33 the patch passed
-1 whitespace 0 The patch has 1 line(s) that end in whitespace. Use git apply --whitespace=fix <<patch_file>>. Refer https://git-scm.com/docs/git-apply
+1 shadedclient 738 patch has no errors when building and testing our client artifacts.
+1 findbugs 47 the patch passed
+1 javadoc 19 the patch passed
_ Other Tests _
+1 unit 275 hadoop-aws in the patch passed.
+1 asflicense 25 The patch does not generate ASF License warnings.
3251
Subsystem Report/Notes
Docker Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-647/2/artifact/out/Dockerfile
GITHUB PR #647
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle
uname Linux 9b87873c9b5f 4.4.0-139-generic #165-Ubuntu SMP Wed Oct 24 10:58:50 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality personality/hadoop.sh
git revision trunk / fcc7f9b
maven version: Apache Maven 3.3.9
Default Java 1.8.0_191
findbugs v3.1.0-RC1
checkstyle https://builds.apache.org/job/hadoop-multibranch/job/PR-647/2/artifact/out/diff-checkstyle-hadoop-tools_hadoop-aws.txt
whitespace https://builds.apache.org/job/hadoop-multibranch/job/PR-647/2/artifact/out/whitespace-eol.txt
Test Results https://builds.apache.org/job/hadoop-multibranch/job/PR-647/2/testReport/
Max. process+thread count 466 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-aws U: hadoop-tools/hadoop-aws
Console output https://builds.apache.org/job/hadoop-multibranch/job/PR-647/2/console
Powered by Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

@steveloughran
Copy link
Contributor Author

merged into trunk; #731 covers the backport

@steveloughran steveloughran deleted the s3/HADOOP-16118-DDB-on-demand branch June 5, 2019 22:00
shanthoosh pushed a commit to shanthoosh/hadoop that referenced this pull request Oct 15, 2019
This Request is a copy of apache#647(got garbled). This PR  already addresses all the comments brought up in the other request.

Author: Boris S <[email protected]>
Author: Boris S <[email protected]>
Author: Boris Shkolnik <[email protected]>

Reviewers: Shanthoosh Venkatraman <[email protected]>, Prateek Maheshwari <[email protected]>

Closes apache#662 from sborya/NewConsumerAdmin2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fs/s3 changes related to hadoop-aws; submitter must declare test endpoint

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants