我正在使用以下简单代码将文件上传到 hdfs。
FileSystem hdfs = FileSystem.get(config);
hdfs.copyFromLocalFile(src, dst);
这些文件由 webserver java 组件生成,并由 .gz 格式的 logback 旋转和关闭。我注意到有时 .gz 文件已损坏。
> gunzip logfile.log_2013_02_20_07.close.gz
gzip: logfile.log_2013_02_20_07.close.gz: unexpected end of file
但是以下命令确实向我显示了文件的内容
> hadoop fs -text /input/2013/02/20/logfile.log_2013_02_20_07.close.gz
拥有这样的文件的影响是相当灾难的——因为一整天的聚合失败,并且在这种情况下,几个从节点被标记为黑名单。
在这种情况下我该怎么办?hadoop copyFromLocalFile() 实用程序会损坏文件吗?有没有人遇到过类似的问题?