原理:
上传本地文件到 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 的调用