【发布时间】:2014-07-27 16:16:33
【问题描述】:
简介
向this question提出后续问题。
已向 HDFS 提供了一个文件,随后已将其复制到三个 DataNode。 如果要再次提供相同的文件,HDFS 指示该文件已经存在。
基于this answer,文件将被拆分为 64MB 的块(取决于配置设置)。文件名和块的映射将在 NameNode 中创建。 NameNode 知道某个文件的块驻留在哪个 DataNodes 中。如果再次提供相同的文件,NameNode 知道该文件的块存在于 HDFS 上,并将指示该文件已经存在。
如果文件的内容被更改并再次提供,NameNode 是否会更新现有文件,或者检查是否仅限于mapping of filename to blocks,尤其是filename?哪个进程对此负责?
哪个进程负责将文件分割成块?
示例写入路径:
根据this documentation,HBase的Write Path如下:
可能的写入路径 HDFS:
- 提供给 HDFS 的文件,例如
hadoop fs -copyFromLocal ubuntu-14.04-desktop-amd64.iso / - 文件名检查
FSImage是否已经存在。如果是这种情况,消息file already exists is displayed - 文件拆分为
blocks64MB(取决于配置 环境)。Question: Name of the process which is responsible for block splitting? - 在
DataNodes上阻止replicated(复制因子可以是 已配置) - 将 FileName 映射到存储在 NameNode 中的 EditLog 中的块(元数据)
问题
HDFS' Write Path 长什么样子?
【问题讨论】: