3)当no.of文件如此庞大时,单个Namenode将无法保留所有元数据。实际上这是HDFS的局限之一。您可以检查HDFS Federation,它旨在通过拆分由不同名称节点提供服务的不同命名空间来解决此问题。
4)
Read process : a) Client first gets the datanodes where the actual data is located from the namenode b) Then it directly contacts the datanodes to read the data Write process : a) Client asks namenode for some datanodes to write the data and if available Namenode gives them b)Client goes directly to the datanodes and write
对于问题4,客户端确实将数据直接写入Datanode。但是,在它可以写入DataNode之前,它需要与Namenode通信以获取metatdata,如Datanode和要写入的块。
http://hadoop.apache.org/hdfs/docs/r0.21.0/hdfs_imageviewer.html
我认为以下解释可以帮助您更好地理解HDFS架构。 您可以将Name节点视为FAT(文件分配表)+目录数据和数据节点为哑块设备。 当您想要从常规文件系统中读取文件时,您应该转到目录,然后转到FAT,获取所有相关块的位置并阅读它们。 HDFS也是如此。 当您想要读取文件时,您转到Namenode,获取给定文件所具有的列表块。有关块的信息将包含此信息所在的数据节点列表。之后,您转到datanode并从中获取相关块。
是的,NameNode管理这些。此外,这些数据也会保存在fsimage中并编辑将在本地磁盘上的文件。
不,所有元数据都将由NameNode维护。因此,维护元数据的datanode负担将更少。
将只有一个主NameNode。正如我所说,管理元数据大小的限制,数据将经常保存在fsimage中并通过检查点进行编辑。
客户端可以在从NameNode获取文件信息后联系DataNode。