2015-09-14 89 views
0

HDFS允许单写作者多读者模型。在这个模型中 - 它能否面对数据读取与作者写作内容不一致的情况?在执行明确的h-flush操作之前,HDFS不保证数据的可见性,但如果读取器读取的数据被写入器更改,会怎么样?它不会是数据不一致性问题吗?HDFS单写入器多读取器模型 - 读取不一致?

回答

0

在HDFS中,读者读取的数据将被写入者更改的场景根本不会发生。

正如你所看到的,HDFS支持write once模型,它不允许修改任何写入的数据。

因此,一旦调用了FSDataOutputStream.hsync(),数据将被写入磁盘,客户端可以读取数据,编写者将无法修改刷新的数据。

修改内容的唯一方法是使用所需更改复制相同的数据。

编辑: -

设计事实HDFS,让我们尽快块被刷新出局阅读正在被复制的文件的最近写入的块,大多用于跟踪进度完成文件写入操作,避免文件关闭失败并且还支持命令hadoop fs -tail

请参考,

https://issues.apache.org/jira/browse/HADOOP-89

HDFS既保证了Eventual consistency该文件的块将横跨客户端关闭文件的写操作后,才分布式系统是一致的。

- 礼貌@ sunrise76

+0

有道理。一种情况是:Writer将写入512KB,但他刷新读取器读取的256KB数据。最终编写者将写入512KB,但由于读者只读取了256KB的新数据 - 在这种情况下它不会影响读取一致性吗?还是我们在这里遵循最终的一致性模型? – yguw

+1

它遵循最终的一致性 –

+0

@yguw,我编辑了答案。请检查它是否有帮助。 – sureshsiva