【问题标题】:Write Path HDFS写入路径 HDFS
【发布时间】: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:

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

问题

HDFS' Write Path 长什么样子?

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

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

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

    HDFS 的写入路径是什么样的?

    这在本文中有详细说明:"The Hadoop Distributed File System" by Shvachko et al。特别是,请阅读第 2.C 节(并查看图 1):

    “客户端写入时,首先要求NameNode选择DataNodes来承载文件第一个块的副本。客户端组织一个节点到节点的管道并发送数据。当第一个块被填满时, 客户端请求选择新的 DataNodes 来托管下一个块的副本. 一个新的管道被组织起来, 客户端发送文件的更多字节. 每个块的 DataNodes 的选择很可能是不同的.客户端、NameNode和DataNodes如图1所示。"

    注意:基于本文的书籍章节可在online too 获得。并且对应图的直接链接(纸上的图1和书上的8.1)是here

    【讨论】:

      猜你喜欢
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 2017-02-02
      • 2019-07-21
      • 2015-12-21
      • 2020-06-13
      相关资源
      最近更新 更多