[
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)