我知道并多次阅读Hadoop并不知道输入文件中的内容,并且拆分取决于InputFileFormat,但让我们更具体......例如,我读了GZIP是不可拆分的,所以如果我有一个1 TB的唯一gzip压缩输入文件,并且没有一个节点有这么大的高清,会发生什么?输入将被拆分,但hadoop将添加有关一个块和其他块之间的依赖关系的信息?
其他问题,如果我有一个巨大的.xml文件,那么基本上是文本,拆分如何工作,按行或按块大小配置的MB?
答案 0 :(得分:1)
BZIP2 可以在hadoop中拆分 - 它提供了非常好的压缩比,但是从CPU时间和性能来看并不能提供最佳结果,因为压缩非常耗费CPU。
LZO 可以在hadoop中拆分 - 利用 hadoop-lzo 您可以拆分压缩的LZO文件。您需要具有外部.lzo.index文件才能并行处理。该库提供了以本地或分布式方式生成这些索引的所有方法。
LZ4 可以在hadoop中拆分 - 利用 hadoop-4mc 您可以拆分压缩的4mc文件。您不需要任何外部索引,并且您可以使用提供的命令行工具或Java / C代码,内部/外部hadoop生成存档。 4mc可在任何速度/压缩比级别的hadoop LZ4上使用:从快速模式达到500 MB / s压缩速度到高/超模式,提供更高的压缩比,几乎可与GZIP相媲美。
ZSTD (z标准)现在可以通过利用 hadoop-4mc 在hadoop / Spark / Flink中进行拆分。
请查看Hadoop Elephant Bird来处理您工作中的复杂输入。无论如何 XML 在EB或hadoop,AFAIK中无法原生拆分。