hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Haohui Mai (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-8696) Reduce the variances of latency of WebHDFS
Date Sat, 19 Sep 2015 18:44:05 GMT

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

Haohui Mai commented on HDFS-8696:

Thanks everybody.

I talked to a bunch of folks offline. Here is the recap:

* After HDFS-7279, the DNs are capable of handling much more requests concurrently compared
to the days that DN served WebHDFS traffic using Jetty.
* The requests have high variances of latency as observed in this jira.
* After poking at multiple parameters in Netty, it looks like that tweaking low / high water
marks from (32k / 64k) to (256k / 1M) has resolved the issues.

It looks to me that the results of experiments imply that there are high variances of latency
in {{DFSInputStream#read()}}, so having a larger buffer by setting water marks definitely
helps. On the other hand, having a higher water mark also means significant more buffer consumptions
when there are many (1000+) concurrent connections. I don't think these tweaks should not
be turned on by default. They should only be tuned for specific use cases.

For this patch I would suggest (1) making only high / low water mark configurable. (2) leave
low / high water marks as the defaults if when unspecified.

> Reduce the variances of latency of WebHDFS
> ------------------------------------------
>                 Key: HDFS-8696
>                 URL: https://issues.apache.org/jira/browse/HDFS-8696
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: webhdfs
>    Affects Versions: 2.7.0
>            Reporter: Xiaobing Zhou
>            Assignee: Xiaobing Zhou
>         Attachments: HDFS-8696.004.patch, HDFS-8696.1.patch, HDFS-8696.2.patch, HDFS-8696.3.patch
> There is an issue that appears related to the webhdfs server. When making two concurrent
requests, the DN will sometimes pause for extended periods (I've seen 1-300 seconds), killing
performance and dropping connections. 
> To reproduce: 
> 1. set up a HDFS cluster
> 2. Upload a large file (I was using 10GB). Perform 1-byte reads, writing
> the time out to /tmp/times.txt
> {noformat}
> i=1
> while (true); do 
> echo $i
> let i++
> /usr/bin/time -f %e -o /tmp/times.txt -a curl -s -L -o /dev/null "http://<namenode>:50070/webhdfs/v1/tmp/bigfile?op=OPEN&user.name=root&length=1";
> done
> {noformat}
> 3. Watch for 1-byte requests that take more than one second:
> tail -F /tmp/times.txt | grep -E "^[^0]"
> 4. After it has had a chance to warm up, start doing large transfers from
> another shell:
> {noformat}
> i=1
> while (true); do 
> echo $i
> let i++
> /usr/bin/time -f %e curl -s -L -o /dev/null "http://<namenode>:50070/webhdfs/v1/tmp/bigfile?op=OPEN&user.name=root";
> done
> {noformat}
> It's easy to find after a minute or two that small reads will sometimes
> pause for 1-300 seconds. In some extreme cases, it appears that the
> transfers timeout and the DN drops the connection.

This message was sent by Atlassian JIRA

View raw message