hdfs将在0.21版(尚未发布),把DFSOutputStream中的fsync操作(实际上是sync方法)更名为hflush, 因为之前的fsync做的工作实际上不是同步数据到磁盘,而是刷新(flush)缓存。fsync功能可能会在以后的版本中添加。
DFS对于未关闭文件的数据提供最大努力持久:
1. NameNode持久化文件元数据信息,但不持久化文件由哪些块组成的信息。重启NameNode可能会导致数据丢失。
2. DFS不保证各数据块的副本数和文件的复制因子一致。如果一个数据块没有一个有效副本被写入,则写失败。
DFS对于已关闭文件的数据提供强持久:
1. NameNode持久化文件和数据块元数据信息。重启NameNode不会导致数据丢失。
2. DFS保证各数据块的副本数和文件的复制因子一致。
1. NameNode持久化文件和数据块元数据信息。重启NameNode不会导致数据丢失。
2. DFS保证各数据块的副本数和文件的复制因子一致。
3. 文件关闭不保证数据已经到达磁盘。如果数据未到达磁盘,重启DataNode会导致数据丢失。
读
对于未关闭文件的数据,只有已完成块的数据对readers是可见的。正在写的块中的数据,对reader来说是不可见的。
本文探讨了HDFS中未关闭文件与已关闭文件的数据持久性差异。未关闭文件仅提供最大努力持久化,NameNode仅持久化元数据信息;而关闭后的文件则提供强持久化,确保数据块副本数与复制因子一致。此外,还讨论了fsync方法更名至hflush的变化。
408

被折叠的 条评论
为什么被折叠?



