我在 HDFS 上有很多包含大量文本文件的 tar.gz 文件的日常文件夹。
发现其中许多 tar.gz 已损坏,并导致 hive/mapreduce 作业在处理这些文件时因“意外的流结束”而崩溃。
我确定了其中的一些并使用 tar -zxvf 对其进行了测试。他们确实因错误而退出,但在此发生之前仍会提取相当数量的文件。
当 tar/gz 文件损坏时,有没有办法阻止 hive/mapreduce 作业简单地崩溃?我测试了一些错误跳过和容错参数,例如
mapred.skip.attempts.to.start.skipping、
mapred.skip.map.max.skip.records、
mapred.skip.mode.enabled、
mapred.map.max .attempts,
mapred.max.map.failures.percent,
mapreduce.map.failures.maxpercent。
它有助于在少数情况下处理完整的文件夹而不会崩溃,但大多数情况下这会导致作业挂起并且根本无法完成。
解压缩hadoop外部的每个文件只是为了在之后重新压缩它们(以获得干净的gzip文件)然后再次上传到hdfs将是一个非常痛苦的过程(因为额外的步骤和大量的数据会产生)
有人找到了更清洁/更优雅的解决方案吗?
谢谢你的帮助。