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

Ning Zhang commented on HDFS-767:
---------------------------------

Raghu, you are right. The xceivers count is on the DataNode level rather than 
on the block level. That makes 256 sounds too small. We will follow your tips 
to make dfs.datanode.max.xcievers larger. 

Before the async IO and RPC are implemented, I think this patch still makes 
sense even if xceiver is changed to 2k. One reason is that there is still a 
high probability that all 3 replicas got 2k slots occupied (considering 2k is 
on the data level, and sometimes 2 replicas are used if software RAID is 
deployed) in a large and busy cluster. In our cluster, I've seen over 26k 
mappers accessing the same file at roughtly the same time. The current 
implementation waiting for a hard-coded 3 seconds seems to be inflexible and 
has poor performance.  

Another reason is that as the cluster scales out (# of machines as well as # of 
mapper slots are increasing), individual machines are not scaling up 
accordingly (some of the machine in the cluster have lower memory and CPU 
power). So we cannot always increase xceivers count for this case. 

> Job failure due to BlockMissingException
> ----------------------------------------
>
>                 Key: HDFS-767
>                 URL: https://issues.apache.org/jira/browse/HDFS-767
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Ning Zhang
>         Attachments: HDFS-767.patch
>
>
> If a block is request by too many mappers/reducers (say, 3000) at the same 
> time, a BlockMissingException is thrown because it exceeds the upper limit (I 
> think 256 by default) of number of threads accessing the same block at the 
> same time. The DFSClient wil catch that exception and retry 3 times after 
> waiting for 3 seconds. Since the wait time is a fixed value, a lot of clients 
> will retry at about the same time and a large portion of them get another 
> failure. After 3 retries, there are about 256*4 = 1024 clients got the block. 
> If the number of clients are more than that, the job will fail. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to