在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中,并且对所有读者都可见了
-
Path p = new Path("p"); FSDataOutputStream out = fs.create(p); out.write("content".getBytes("UTF-8")); out.sync();
在HDFS中关闭一个流隐式的调用了sync()方法&#