HDFS 在写文件的过程中能否 ls 到正在写的文件?
Posted PeersLee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS 在写文件的过程中能否 ls 到正在写的文件?相关的知识,希望对你有一定的参考价值。
原理:
上传本地文件到 HDFS 过程:
20G May 25 14:56 xx.tar
hdfs dfs -put xx.tar /data/
hdfs dfs -ls /data/
/data/xx.tar._COPYING_
通过 java api 写文件:
org.apache.hadoop.fs.FileSystem#create 实际上已把元数据写到 editlog 了; -ls 就能看到一个 size = 0 的文件
org.apache.hadoop.fs.FSDataOutputStream.write & flush(close) 之后就可以 cat 到已写的内容,并且文件会有 size 大小
结论:
在 client protocol create 的时候 nn 就已经在 meta 数据中记录了创建的文件,所以在写的过程中肯定可以看到文件,但至于能不能看到当前的内容取决于 flush 的调用
以上是关于HDFS 在写文件的过程中能否 ls 到正在写的文件?的主要内容,如果未能解决你的问题,请参考以下文章