hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lei (Eddy) Xu (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-11697) Use larger value for fs.s3a.connection.timeout.
Date Tue, 10 Mar 2015 05:52:38 GMT

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

Lei (Eddy) Xu commented on HADOOP-11697:

Hey, [~yzhangal]. Thanks a lot for your detailed reviews. 

bq. The original setting in com.amazonaws.ClientConfiguration has the default of 50 seconds:

We have several tests to run {{hadoop fs -put}} data from 300MB ~ 4GB in an EC2 instance with
these default setups, and they constantly throw {{SocketTimeoutExceptions}}:

2015-01-28 14:53:39,528 INFO  [XXX] http.AmazonHttpClient (AmazonHttpClient.java:executeHelper(448))
- Unable to execute HTTP request: Read timed out
java.net.SocketTimeoutException: Read timed out
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
The main reason causes this timeout is renaming operation on S3. 

Also I tested to {{fs -put}} a 4GB file, which takes about 5 minutes. 
real 333.32
user 94.26
sys 65.08

The s3a upload parameters are not optimized yet. Note that this timeout is for 

     * Sets the amount of time to wait (in milliseconds) for data to be
     * transfered over an established, open connection before the connection
     * times out and is closed. A value of 0 means infinity, and isn't recommended.
    public void setSocketTimeout(int socketTimeout) {

That's the reason I think 30 minutes is an _aggressively_ safe timeout for uploading 10-30GB
files. In the future, after HDFS-7240 being committed, we can avoid renaming {{\_COPYING_}}
file in {{fs -put}}, this timeout can be much smaller. 

bq. usually the config names for timeout would contain a section to indicate the time unit.

It is a very nice suggestion. Shall I file a following JIRA to address this?


> Use larger value for fs.s3a.connection.timeout.
> -----------------------------------------------
>                 Key: HADOOP-11697
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11697
>             Project: Hadoop Common
>          Issue Type: Improvement
>    Affects Versions: 2.6.0
>            Reporter: Lei (Eddy) Xu
>            Assignee: Lei (Eddy) Xu
>            Priority: Minor
>              Labels: s3
>         Attachments: HADOOP-11697.001.patch, HDFS-7908.000.patch
> The default value of {{fs.s3a.connection.timeout}} is {{50000}} milliseconds. It causes
many {{SocketTimeoutException}} when uploading large files using {{hadoop fs -put}}. 
> Also, the units for {{fs.s3a.connection.timeout}} and {{fs.s3a.connection.estaablish.timeout}}
are milliseconds. For s3 connections, I think it is not necessary to have sub-seconds timeout
value. Thus I suggest to change the time unit to seconds, to easy sys admin's job.

This message was sent by Atlassian JIRA

View raw message