2017-01-26 18 views

回答

1

NameNode分配块ID并将其提供给客户端。然后,客户端在与DataNode进行通信的同时使用该块ID将数据写入该块。

Apache JIRA HDFS-4645记录了用于分配块ID的当前设计。它使用从特定常数开始的单调递增的ID。如果您有兴趣查看此代码,请参阅Apache Hadoop代码库中的BlockIdManagerSequentialBlockIdGenerator类。

+0

请纠正我,如果我错了。按照我的理解,客户端会将文件分割成块。客户端要求名称节点获取数据节点的可用性然后将这些块写入数据节点。一旦写入过程完成。数据节点将向名称节点提供块信息,然后只有名称节点更新元数据在此过程中,作为clientis实际分割块生成块ID。如果名称节点未由数据节点更新,名称节点如何为块分配块ID 。 –

+0

客户决定何时需要为文件分配新块,但NameNode始终是分配新块ID的中心点是正确的。客户端对NameNode进行RPC调用以分配块。然后,NameNode生成一个块ID,将其保存到元数据并将该块ID发回客户端。然后,客户端在与DataNode进行通信时使用该块ID。 –

+1

您的意思是当客户端要求名称节点为块分配数据节点时,它将该块的块ID发送给客户端? –