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

Vinitha Reddy Gankidi commented on HDFS-10301:
----------------------------------------------

I uploaded the patch HDFS-10301.004.patch. I have implemented the idea that 
Konstantin suggested, i.e, DNs explicitly report storages that they have. This 
eliminates NN guessing which storage is the last in the block report RPC. In 
the case of FBR, NameNodeRPCServer can retrieve the list of storages from the 
storage block report array. In the case that block reports are split, DNs send 
an additional StorageReportOnly RPC after sending the block reports for each 
individual storage. This StorageReportOnly RPC is sent as a FBR. This rpc 
contains all the storages that the DN has with -1 number of blocks. A new enum 
STORAGE_REPORT_ONLY is introduced in BlockListsAsLong for this purpose.

Zombie storage removal is triggered from the NameNodeRPCServer instead of the 
BlockManager since the RPCServer now has all the information required to 
construct the list of storages that the DN is reporting. After processing the 
block reports as usual, zombie storages are removed by comparing the list of 
storages in the block report and the list of storages that the NN is aware of 
for that DN.



> BlockReport retransmissions may lead to storages falsely being declared 
> zombie if storage report processing happens out of order
> --------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-10301
>                 URL: https://issues.apache.org/jira/browse/HDFS-10301
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>    Affects Versions: 2.6.1
>            Reporter: Konstantin Shvachko
>            Assignee: Vinitha Reddy Gankidi
>            Priority: Critical
>         Attachments: HDFS-10301.002.patch, HDFS-10301.003.patch, 
> HDFS-10301.004.patch, HDFS-10301.01.patch, HDFS-10301.sample.patch, 
> zombieStorageLogs.rtf
>
>
> When NameNode is busy a DataNode can timeout sending a block report. Then it 
> sends the block report again. Then NameNode while process these two reports 
> at the same time can interleave processing storages from different reports. 
> This screws up the blockReportId field, which makes NameNode think that some 
> storages are zombie. Replicas from zombie storages are immediately removed, 
> causing missing blocks.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to