diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index 1256ae5afe6..6e438729e7a 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -610,6 +610,8 @@ Release 2.7.0 - UNRELEASED
HADOOP-11600. Fix up source codes to be compiled with Guava 17.0. (ozawa)
+ HADOOP-11522. Update S3A Documentation. (Thomas Demoor via stevel)
+
OPTIMIZATIONS
HADOOP-11323. WritableComparator#compare keeps reference to byte array.
diff --git a/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml b/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
index 7135ab8c0af..5eb301a244b 100644
--- a/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
+++ b/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
@@ -690,12 +690,12 @@ for ldap providers in the same way as above does.
- fs.s3a.access.key
+ fs.s3a.awsAccessKeyId
AWS access key ID. Omit for Role-based authentication.
- fs.s3a.secret.key
+ fs.s3a.awsSecretAccessKey
AWS secret key. Omit for Role-based authentication.
@@ -711,6 +711,46 @@ for ldap providers in the same way as above does.
Enables or disables SSL connections to S3.
+
+ fs.s3a.endpoint
+ AWS S3 endpoint to connect to. An up-to-date list is
+ provided in the AWS Documentation: regions and endpoints. Without this
+ property, the standard region (s3.amazonaws.com) is assumed.
+
+
+
+
+ fs.s3a.proxy.host
+ Hostname of the (optional) proxy server for S3 connections.
+
+
+
+ fs.s3a.proxy.port
+ Proxy server port. If this property is not set
+ but fs.s3a.proxy.host is, port 80 or 443 is assumed (consistent with
+ the value of fs.s3a.connection.ssl.enabled).
+
+
+
+ fs.s3a.proxy.username
+ Username for authenticating with proxy server.
+
+
+
+ fs.s3a.proxy.password
+ Password for authenticating with proxy server.
+
+
+
+ fs.s3a.proxy.domain
+ Domain for authenticating with proxy server.
+
+
+
+ fs.s3a.proxy.workstation
+ Workstation for authenticating with proxy server.
+
+
fs.s3a.attempts.maximum
10
@@ -730,6 +770,33 @@ for ldap providers in the same way as above does.
directory listings at a time.
+
+ fs.s3a.threads.max
+ 256
+ Maximum number of concurrent active (part)uploads,
+ which each use a thread from the threadpool.
+
+
+
+ fs.s3a.threads.core
+ 15
+ Number of core threads in the threadpool.
+
+
+
+ fs.s3a.threads.keepalivetime
+ 60
+ Number of seconds a thread can be idle before being
+ terminated.
+
+
+
+ fs.s3a.max.total.tasks
+ 1000
+ Number of (part)uploads allowed to the queue before
+ blocking additional uploads.
+
+
fs.s3a.multipart.size
104857600
diff --git a/hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/index.md b/hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/index.md
index 375f82c8e6c..8f511dd276c 100644
--- a/hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/index.md
+++ b/hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/index.md
@@ -32,7 +32,7 @@ The specifics of using these filesystems are documented below.
## Warning: Object Stores are not filesystems.
-Amazon S3 is an example of "an object store". In order to achieve scalalablity
+Amazon S3 is an example of "an object store". In order to achieve scalability
and especially high availability, S3 has —as many other cloud object stores have
done— relaxed some of the constraints which classic "POSIX" filesystems promise.
@@ -164,6 +164,46 @@ If you do any of these: change your credentials immediately!
Enables or disables SSL connections to S3.
+
+ fs.s3a.endpoint
+ AWS S3 endpoint to connect to. An up-to-date list is
+ provided in the AWS Documentation: regions and endpoints. Without this
+ property, the standard region (s3.amazonaws.com) is assumed.
+
+
+
+
+ fs.s3a.proxy.host
+ Hostname of the (optional) proxy server for S3 connections.
+
+
+
+ fs.s3a.proxy.port
+ Proxy server port. If this property is not set
+ but fs.s3a.proxy.host is, port 80 or 443 is assumed (consistent with
+ the value of fs.s3a.connection.ssl.enabled).
+
+
+
+ fs.s3a.proxy.username
+ Username for authenticating with proxy server.
+
+
+
+ fs.s3a.proxy.password
+ Password for authenticating with proxy server.
+
+
+
+ fs.s3a.proxy.domain
+ Domain for authenticating with proxy server.
+
+
+
+ fs.s3a.proxy.workstation
+ Workstation for authenticating with proxy server.
+
+
fs.s3a.attempts.maximum
10
@@ -183,6 +223,33 @@ If you do any of these: change your credentials immediately!
directory listings at a time.
+
+ fs.s3a.threads.max
+ 256
+ Maximum number of concurrent active (part)uploads,
+ which each use a thread from the threadpool.
+
+
+
+ fs.s3a.threads.core
+ 15
+ Number of core threads in the threadpool.
+
+
+
+ fs.s3a.threads.keepalivetime
+ 60
+ Number of seconds a thread can be idle before being
+ terminated.
+
+
+
+ fs.s3a.max.total.tasks
+ 1000
+ Number of (part)uploads allowed to the queue before
+ blocking additional uploads.
+
+
fs.s3a.multipart.size
104857600
@@ -231,6 +298,9 @@ If you do any of these: change your credentials immediately!
## Testing the S3 filesystem clients
+Due to eventual consistency, tests may fail without reason. Transient
+failures, which no longer occur upon rerunning the test, should thus be ignored.
+
To test the S3* filesystem clients, you need to provide two files
which pass in authentication details to the test runner
@@ -256,7 +326,10 @@ each filesystem for its testing.
2. `test.fs.s3.name` : the URL of the bucket for "S3" tests
The contents of each bucket will be destroyed during the test process:
-do not use the bucket for any purpose other than testing.
+do not use the bucket for any purpose other than testing. Furthermore, for
+s3a, all in-progress multi-part uploads to the bucket will be aborted at the
+start of a test (by forcing fs.s3a.multipart.purge=true) to clean up the
+temporary state of previously failed tests.
Example: