【问题标题】:Anatomy of a File Write in HDFS剖析 HDFS 中的文件写入
【发布时间】:2016-06-07 03:16:17
【问题描述】:

以下是 Hadoop Definitive Guide 在“Anatomy of a File Write in HDFS”中的句子。不清楚,谁能提供更多细节。

如果任何数据节点在写入数据时发生故障,则会采取以下操作,这些操作对于写入数据的客户端是透明的。首先,关闭管道,将ack队列中的任何数据包添加到数据队列的最前面,这样故障节点下游的datanode就不会丢失任何数据包。

Q.) 这意味着“故障节点下游的数据节点不会丢失任何数据包”是什么意思?谁能解释的更详细些。

当客户端完成数据写入后,它会在流上调用 close()。此操作将所有剩余的数据包刷新到 datanode 管道并等待确认,然后再联系 namenode 以发出文件已完成的信号。

Q.) “动作将所有剩余的数据包刷新到数据节点管道”是什么?

Q.) 如果客户端已经完成了数据写入,那么为什么数据包仍然存在,为什么它必须刷新数据节点。

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

    Ans.1)在 Hadoop 中有一个复制因子的概念,它决定了数据管道(查看我在 data pipeline 上的答案)要写入数据的位置。假设在将数据写入 3 个节点时,第 3 个节点失败。然后应该正确写入其他两个节点的数据。他们不应该是别人问题的罪魁祸首。

    Ans.2 和 3) 在向 hdfs 写入数据的过程中,客户端在某个时间点完成了要写入的数据,但这并不意味着实际写入了全部数据下游的数据节点。数据节点可能正在等待 CPU 周期或内存可用时写入。在这种情况下,客户端在输出流上调用 close() 方法来确认写入数据。

    【讨论】:

      猜你喜欢
      • 2018-06-04
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多