Hadoop Avro 文件大小问题

Posted

技术标签:

【中文标题】Hadoop Avro 文件大小问题【英文标题】:Hadoop Avro file size concern 【发布时间】:2015-10-01 16:26:08 【问题描述】:

我有一个 cronjob,它每 5 分钟从 Internet 上的服务器下载 zip 文件(200 字节到 1MB)。如果我将 zip 文件按原样导入 HDFS,我会遇到臭名昭著的 Hadoop 小文件大小问题。为了避免在 HDFS 中堆积小文件,处理 zip 文件中的文本数据并将它们转换为 avro 文件,并等待每 6 小时将我的 avro 文件添加到 HDFS 中。使用这种方法,我设法将 avro 文件导入到 HDFS 中,文件大小大于 64MB。文件大小范围从 50MB 到 400MB。我担心的是,如果我开始构建开始进入 500KB avro 文件大小范围或更大的文件大小会发生什么。这会导致 Hadoop 出现问题吗?其他人如何处理这种情况?

【问题讨论】:

【参考方案1】:

假设您有一些 Hadoop 后聚合步骤,并且您正在使用一些可拆分的压缩类型(sequence、snappy、none),那么您不应该面临任何来自 Hadoop 的问题。

如果您希望 avro 文件更小,最简单的方法是让您的聚合窗口可配置,并在需要时降低它(6 小时 => 3 小时?)。另一种可能确保文件大小更加统一的方法是保持从下载文件中看到的行数,然后在达到某个行阈值后合并上传。

【讨论】:

以上是关于Hadoop Avro 文件大小问题的主要内容,如果未能解决你的问题,请参考以下文章

在 GCS 上读取 Avro 文件时出现 OutOfMemoryError 异常

Avro hadoop 随机访问文件

Hadoop块大小和文件大小问题?

更改 Hadoop 中现有文件的块大小

在 Hadoop 中更改文件拆分大小

从 BigQuery 中的 .avro 文件创建表时出现“resourcesExceeded”错误