Hadoop namenode元数据

时间:2011-06-07 15:00:15

标签: hadoop namenode

我对Hadoop架构感到有点困惑。

  1. Hadoop Namenode中存储了哪种文件元数据?从Hadoop wiki,它说Namenode存储整个系统命名空间。 Namenode中是否存储了上次修改时间,创建时间,文件大小,所有者,权限等信息?

  2. datanode是否存储任何元数据信息?

  3. 只有一个Namenode,元数据数据是否超出了服务器的限制?

  4. 如果用户想从Hadoop下载文件,他是否必须从Namenode下载?我从网上找到了下面的architecure图片,它显示客户端可以直接将数据写入datanode?这是真的吗? enter image description here

  5. 感谢!!!!!!!

6 个答案:

答案 0 :(得分:4)

我认为以下说明可以帮助您更好地理解HDFS架构。 您可以将Name节点视为FAT(文件分配表)+目录数据和数据节点为哑块设备。 当您想要从常规文件系统中读取文件时,您应该转到目录,然后转到FAT,获取所有相关块的位置并阅读它们。 HDFS也是如此。 当您想要读取文件时,您转到Namenode,获取给定文件所具有的列表块。有关块的信息将包含此信息所在的数据节点列表。之后你去了datanode并从中得到相关的块。

答案 1 :(得分:2)

  1. 名称节点上的fsimage采用二进制格式。使用“离线图像查看器”以人类可读的格式转储fsimage。可以使用pig或其他工具进一步分析此工具的输出,以获得更有意义的数据。
  2. http://hadoop.apache.org/hdfs/docs/r0.21.0/hdfs_imageviewer.html

答案 2 :(得分:1)

  1. 不,除了块本身
  2. 是的,如果你有很多小文件
  3. 不,有关该文件的信息在Namenode上,文件本身在Datanodes上(理论上datanode可以在同一台机器上,通常在较小的集群上)

答案 3 :(得分:1)

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 :(得分:0)

对于问题编号4.客户端确实将数据直接写入Datanode。但是,在它可以写入DataNode之前,它需要与Namenode通信以获取metatdata,比如Datanode以及要写入的块。

答案 5 :(得分:0)

  1. 是的,NameNode管理这些。此外,这些数据也会保存在fsimage中,并编辑在本地磁盘上的文件。

  2. 不,所有元数据都将由NameNode维护。因此,维护元数据的数据节点负担将更少。

  3. 只有一个主NameNode。正如我所说,管理元数据大小的限制,数据将经常保存在fsimage中并通过检查点进行编辑。

  4. 客户端可以在从NameNode获取文件信息后联系DataNode。