java—是否可以读取正在写入hdfs的数据

lqfhib0f  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(462)

我有一个简单的java程序,它可以连续地写入hdfs。我的理解是,一旦用hdfs编写了一个特定的块,它就可以被其他客户机访问,但在我的情况下,我还不能这样做。我正在写一个大小为39 kb的文件,每次写入都是在100毫秒后开始的。我用色调检查文件的状态,但它显示0字节,直到写入操作正在进行,写入完成后,它显示完整的文件。我想能够读写在文件中的数据,至少说4 kb块。我使用的是默认配置。我的假设正确吗?如果是,我做错了什么?我正在使用一个带有cdh4.4的vm。

ar7v8xwq

ar7v8xwq1#

hadoop definative guide中的一致性模型说:“创建文件后,它在文件系统名称空间中是可见的,正如预期的那样:但是,即使流被刷新,写入文件的任何内容也不能保证是可见的。因此,文件的长度似乎为零:一旦写入的数据超过一个块的值,新的读卡器就会看到第一个块。”

hsync() or hflush() method of FSDataOutputStream should guarentee data is visible.
hvvq6cgz

hvvq6cgz2#

使用hadoop文件系统,您可以读取已经用hdfs编写的文件。
下面是一些带有代码片段的URL,可能对您有所帮助
从java中hadoop类中的hdfs读取文件
用java编程从hdfs读取数据

相关问题