我们假设一个使用默认块大小(128 MB),并且有一个文件使用130 MB;所以使用一个全尺寸的块和一个2 MB的块。然后需要将20 MB添加到文件中(总计现在应为150 MB)。怎么了?带附加的HDFS如何工作
HDFS实际上是否将最后一个块的大小从2MB调整为22MB?或者创建一个新块?
追加到HDFS中的文件如何处理协调? dataloss有风险吗?
HDFS是否创建了一个放置20 + 2 MB的第三个块,并删除了具有2MB的块。如果是的话,这是如何同时工作的?
我们假设一个使用默认块大小(128 MB),并且有一个文件使用130 MB;所以使用一个全尺寸的块和一个2 MB的块。然后需要将20 MB添加到文件中(总计现在应为150 MB)。怎么了?带附加的HDFS如何工作
HDFS实际上是否将最后一个块的大小从2MB调整为22MB?或者创建一个新块?
追加到HDFS中的文件如何处理协调? dataloss有风险吗?
HDFS是否创建了一个放置20 + 2 MB的第三个块,并删除了具有2MB的块。如果是的话,这是如何同时工作的?
根据在Jira issuementioned before的latest design document,我们发现如下回答你的问题:
这是一个非常全面的关于追加的design document,它包含并发问题。
当前HDFS docs给出了该文件的链接,因此我们可以假定它是最近的一个。 (文件日期为2009年)
和相关的issue。
你可以附加到一个封闭的文件吗? – David 2016-02-17 14:20:41
如果您打电话追加打开它的文件。你不能在打开的文件上调用append。那么一旦你调用append并获得一个输出流,你就可以开始将你的字节转储到文件的末尾。 – EthanP 2016-02-17 18:48:28
如果我没记错,当这个功能被引入时,你需要保留一个新创建的文件,以便能够“追加”到它(又名不是真正的追加)。你是说现在HDFS允许1)创建一个文件2)关闭它3)重新打开它4)添加数据到它? – David 2016-02-17 22:30:51