HDFS 单写入器多个 reader 模型 - 读取不一致?

HDFS single writer multiple reader model - read inconsistency?

HDFS 允许单个写入器多个 reader 模型。在这个模型中——它是否会面临读取的数据与写入的数据不一致的情况?在执行显式 h-flush 操作之前,HDFS 不保证数据的可见性,但是如果 reader 读取的数据被 writer 更改了怎么办 - 这不会是数据不一致的问题吗?

reader读取的数据会被writer修改的场景,在HDFS中是完全不会发生的

正如您正确观察到的那样,HDFS 支持 write once 模型,它不允许对写入的数据进行任何修改。

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

修改内容的唯一方法是复制相同的数据并进行必要的更改。

编辑:-

HDFS 中的设计事实使我们能够读取正在复制的文件的最近写入的块,一旦块被刷新,主要是为了 跟踪完整的进度文件写操作,避免文件关闭失败,也支持hadoop fs -tail命令。

请参考,

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

HDFS 仅保证 Eventual consistency 只有在客户端关闭文件写入操作后,文件的块才会在分布式系统中保持一致。

-- 礼貌@sunrise76