2

我对 Hadoop 架构有点困惑。

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

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

  3. Namenode只有一个,元数据数据能超过服务器的限制吗?

  4. 如果用户想从 Hadoop 下载文件,他必须从 Namenode 下载吗?我从网上找到了下面的架构图片,它显示客户端可以直接将数据写入数据节点?这是真的吗? 在此处输入图像描述

谢谢!!!!!!!

4

6 回答 6

6

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

于 2011-06-08T11:09:05.090 回答
2
  1. 名称节点上的 fsimage 是二进制格式。使用“离线图像查看器”以人类可读的格式转储 fsimage。这个工具的输出可以用 pig 或其他一些工具进一步分析,以获得更有意义的数据。

http://hadoop.apache.org/hdfs/docs/r0.21.0/hdfs_imageviewer.html

于 2011-06-08T11:36:21.120 回答
1
  1. 是的
  2. 不,除了积木本身
  3. 是的,如果你有很多小文件
  4. 不,有关文件的信息在 Namenode 上,文件本身在 Datanodes 上(理论上,Datanode 可以在同一台机器上,并且通常在较小的集群上)
于 2011-06-07T18:34:29.297 回答
1

3)当文件数量如此庞大时,单个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
于 2011-12-10T15:21:40.883 回答
0

对于第 4 个问题。客户端确实将数据直接写入 Datanode。但是,在它可以写入 DataNode 之前,它需要与 Namenode 对话以获取元数据,例如要写入哪个 Datanode 和哪个块。

于 2014-08-07T21:33:37.607 回答
0
  1. 是的,NameNode 管理这些。此外,这些数据通常会保存在 fsimage 中并编辑将在本地磁盘上的文件。

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

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

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

于 2016-02-09T22:52:10.887 回答