简介
this question的后续问题。
已向HDFS提供文件,并随后将其复制到三个DataNode。 如果将再次提供相同的文件,则HDFS指示该文件已存在。
基于this answer,文件将被拆分为64MB的块(取决于配置设置)。将在NameNode中创建文件名和块的映射。 NameNode
知道某个文件的块DataNodes
所在的位置。如果再次提供相同的文件,则NameNode
知道HDFS上存在此文件的块,并且将指示该文件已经退出。
如果更改文件内容并再次提供,NameNode
会更新现有文件,还是仅限mapping of filename to blocks
,特别是filename
?哪个流程对此负责?
哪个进程负责将文件拆分成块?
示例写入路径:
根据this documentation,HBase的写入路径如下:
可能的写入路径HDFS:
hadoop fs -copyFromLocal ubuntu-14.04-desktop-amd64.iso /
FSImage
中检查了FileName是否已存在。如果是这种情况,请发送消息file already exists is displayed
blocks
(取决于配置
设置)。 Question: Name of the process which is responsible for block splitting?
replicated
上阻止DataNodes
(复制因子可以是
配置的)问题
HDFS' Write Path
的外观如何?
答案 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。