HDFS的一致性模型

在HDFS新建一个文件后,在hdfs文件系统中时立即可见的

当数据块正在写入时,写入的内容不能立即可见,当写入的内容超过一个数据块时,第一个数据块就可见了

正在写入的数据块时不可见的。除非调用sync()

https://cloud.tencent.com/info/ca8219a2334e716c7ed0b5ba2b301b90.html

HDFS某些地方为了性能可能会不符合POSIX(POSIX不仅仅只适用于linux/unix)

在hdfs中创建了一个文件以后,它是可以在命名空间(namespace)中可以看到的

但是任何向此文件中写入的数据并不能保证是可见的

  • 因为在Hadoop中,只有满一个block数据量的数据被写入文件后,此文件中的内容才是可见的(即这些数据会被写入到硬盘中去),所以当前正在写的block中的内容总是不可见的
  • Hadoop提供了一种强制使buffer中的内容到datanode的方法,那就是FSDataOutputStream的sync()方法。调用了sync()方法后,Hadoop保证所有已经被写入的数据都被写到了管道线中的datanode中,并且对所有读者都可见了
  1. Path p = new Path("p");
    FSDataOutputStream out = fs.create(p);
    out.write("content".getBytes("UTF-8"));
    out.sync();

在HDFS中关闭一个流隐式的调用了sync()方法&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值