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

Eric Sirianni commented on HDFS-5448:
-------------------------------------

An issue with relying on the NameNode handshake to assign the UUID is that 
there is a lengthy period during DataNode initialization where the 
{{DatanodeUuid}} is still NULL.  In particular, when the {{FsDatasetSpi}} is 
created in {{initStorage()}}, the {{DatanodeUuid}} is NULL.  The 
{{DatanodeUuid}} is not set afterwards until {{bpRegistrationSucceeded()}}.

My team is porting our {{FsDataset}} plugin from Hadoop 1.x to Hadoop 2.x and 
this behavior as changed (in Hadoop 1.x the {{DatanodeUuid}} was available when 
our {{FsDataset}} plugin was initialized).

Due to this condition, I vote for option 2 "The datanode assigns itself a UUID 
on initialization".

> Synchronize NN registrations across BPServiceActors
> ---------------------------------------------------
>
>                 Key: HDFS-5448
>                 URL: https://issues.apache.org/jira/browse/HDFS-5448
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: datanode
>    Affects Versions: Heterogeneous Storage (HDFS-2832)
>            Reporter: Arpit Agarwal
>            Assignee: Arpit Agarwal
>         Attachments: h5448.01.patch, h5448.03.patch
>
>
> Prior to the heterogeneous storage feature, each Datanode had a single 
> storage ID which was generated by the Namenode on first registration. The 
> storage ID used fixed Datanode identifiers like IP address and port, so that 
> in a federated cluster, for example, all NameNodes would generate the same 
> storage ID.
> With Heterogeneous storage, we have replaced the storage ID with a 
> per-datanode identifier called the Datanode-UUID. The Datanode UUID is also 
> assigned by a NameNode on first registration. In a federated cluster with 
> multiple namenodes, there are two ways to ensure a unique Datanode UUID 
> allocation:
> # Synchronize initial registration requests from the BPServiceActors. If a 
> Datanode UUID is already assigned we don't need to synchronize.
> # The datanode assigns itself a UUID on initialization.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to