写路径HDFS

时间:2014-06-06 11:43:29

标签: hadoop hdfs

简介

this question的后续问题。

已向HDFS提供文件,并随后将其复制到三个DataNode。 如果将再次提供相同的文件,则HDFS指示该文件已存在。

基于this answer,文件将被拆分为64MB的块(取决于配置设置)。将在NameNode中创建文件名和块的映射。 NameNode知道某个文件的块DataNodes所在的位置。如果再次提供相同的文件,则NameNode知道HDFS上存在此文件的块,并且将指示该文件已经退出。

如果更改文件内容并再次提供,NameNode会更新现有文件,还是仅限mapping of filename to blocks,特别是filename?哪个流程对此负责?

哪个进程负责将文件拆分成块?

示例写入路径

根据this documentation,HBase的写入路径如下:

HBase Write Path

可能的写入路径HDFS:

    提供给HDFS的
  1. 文件,例如hadoop fs -copyFromLocal ubuntu-14.04-desktop-amd64.iso /
  2. FSImage中检查了FileName是否已存在。如果是这种情况,请发送消息file already exists is displayed
  3. 文件拆分为64MB的blocks(取决于配置 设置)。 Question: Name of the process which is responsible for block splitting?
  4. replicated上阻止DataNodes(复制因子可以是 配置的)
  5. 将FileName映射到存储在NameNode
  6. 中的EditLog中的块(MetaData)

    问题

    HDFS' Write Path的外观如何?

1 个答案:

答案 0 :(得分:2)

  

如果文件的内容被更改并再次提供,NameNode是否会更新现有文件,或者检查是否仅限于将文件名映射到块,特别是文件名?

不,它不会更新文件。名称节点仅检查路径(文件名)是否已存在。

  

HDFS'写路径看起来像?

本文详细解释了这一点:"The Hadoop Distributed File System" by Shvachko et al。特别是,阅读第2.C节(并检查图1):

  

"当客户端写入时,它首先要求NameNode选择DataNodes来托管文件第一个块的副本。客户端从节点到节点组织管道并发送数据。当第一个块被填满时,客户端请求选择新的DataNode来托管下一个块的副本。组织新的管道,客户端发送文件的其他字节。每个块的DataNode选择可能不同。客户端,NameNode和DataNodes之间的交互如图1所示。"

注意:基于本文的书籍章节可用online too。并且直接链接到相应的图形(纸上的图1和书中的8.1)是here