【发布时间】:2012-07-16 02:19:05
【问题描述】:
我正在更新 HDFS 上的文件。
如何确保所有映射所做的更改都存在于文件中,即文件上的写入操作是否同步?
【问题讨论】:
我正在更新 HDFS 上的文件。
如何确保所有映射所做的更改都存在于文件中,即文件上的写入操作是否同步?
【问题讨论】:
根据Hadoop - The Definitive Guide
多个写入者,任意文件修改
HDFS 中的文件可以由单个写入器写入。写总是在 文件的结尾。不支持多个作者或修改 文件中的任意偏移量。 (这些可能会在未来得到支持,但它们是 可能效率相对较低。)
由于 Hadoop 的性质(多节点/映射器/减速器等),应用程序级同步实际上是不可能的。
MapR distribution of Apache Hadoop 支持随机读取和写入,同时支持多个读取器和写入器。
【讨论】:
HDFS 文件是不可变的。所以你只能附加到它们。
并发追加的问题在这里介绍:Is it possible to append to HDFS file from multiple clients in parallel?
简而言之 - 你不应该。
我还要指出,这不是“先生精神”。如果您想从映射器收集一些数据并将其聚合在一起 - 这正是减速器的作用。
【讨论】: