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 到正在写的文件?的主要内容,如果未能解决你的问题,请参考以下文章

HDFS 在写文件的过程中能否 ls 到正在写的文件?

提取 HDFS 文件夹或文件详细信息

查找目录中的文件数

如何将使用 Pandas 在 Spark 集群上编写的文件移动到 HDFS?

怎么用按键精灵在写的两个脚本之间传递变量?

Hadoop - `hdfs dfs -ls`与ls