spark事件日志hdfs一致性

nkhmeac6  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(427)

我遇到了一个奇怪的问题,spark事件日志的长度没有得到正确更新。例如,我们将查看文件 application_1551818805190_0006_1.inprogress .
当我使用 hdfs dfs -ls /var/log/spark/apps/ ,我看到文件只有309字节:

[hadoop ~]$ hdfs dfs -ls hdfs:///var/log/spark/apps
-rwxrwx---   2 hadoop spark  138180350 2019-03-05 22:47 hdfs:///var/log/spark/apps/application_1551818805190_0004_1
-rwxrwx---   2 hadoop spark  138184198 2019-03-05 22:57 hdfs:///var/log/spark/apps/application_1551818805190_0005_1
-rwxrwx---   2 hadoop spark        309 2019-03-05 23:59 hdfs:///var/log/spark/apps/application_1551818805190_0006_1.inprogress

但是当我从hdfs得到文件时( hdfs dfs -get )在本地文件系统上执行ls,那么文件长度实际上是85695488字节!我很困惑,因为spark eventlogginglistener使用 .hflush() 方法,该方法应使数据对所有读取器可见。
我在使用hadoop的javaapi时遇到了同样的问题。除了打开fsdatainputstream和使用 skip 要手动计算文件的实际字节长度,我能做些什么吗?

wlzqhblo

wlzqhblo1#

解决了的。原来spark历史服务器的writer eventlogginglister会将数据“刷新”到hdfs,但是客户端只会在分配了新块的情况下刷新。

相关问题