2015-09-14 86 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