论坛首页 Java企业应用论坛

HDFS的追加/刷新/读设计

浏览 2705 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-26   最后修改:2010-02-06

hdfs将在0.21版(尚未发布),把DFSOutputStream中的fsync操作(实际上是sync方法)更名为hflush, 因为之前的fsync做的工作实际上不是同步数据到磁盘,而是刷新(flush)缓存。fsync功能可能会在以后的版本中添加。

 

DFS对于未关闭文件的数据提供最大努力持久:
1. NameNode持久化文件元数据信息,但不持久化文件由哪些块组成的信息。重启NameNode可能会导致数据丢失。
2. DFS不保证各数据块的副本数和文件的复制因子一致。如果一个数据块没有一个有效副本被写入,则写失败。

 

DFS对于已关闭文件的数据提供强持久:
1. NameNode持久化文件和数据块元数据信息。重启NameNode不会导致数据丢失。
2. DFS保证各数据块的副本数和文件的复制因子一致。
3. 文件关闭不保证数据已经到达磁盘。如果数据未到达磁盘,重启DataNode会导致数据丢失。

对于未关闭文件的数据,只有已完成块的数据对readers是可见的。正在写的块中的数据,对reader来说是不可见的。

   发表时间:2010-03-05  
> 1. NameNode持久化文件元数据信息,但不持久化文件由哪些块组成的信息。重启NameNode可能会导致数据丢失。

以后hadoop这点有改进吗, 如果一个文件在写入时, 客户端当了, 此时在Lease时间之内, Namenode重启后, 该文件的所有数据全部会丢掉, 肯定啊. 很无奈
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics