一个小文件的hadoop并行任务

hadoop parallel tasks with one small file

我有一个由 3 个节点和一些 40Mb avro 文件组成的集群。我想并行化作业以利用多核,因为文件的每一行都是通过相同的 long-运行 算法处理的。我读到 NLineInputFormat 但我想知道是否设置配置

some_conf.set("mapred.max.split.size",some_value);

有意义吗?

是的,你是对的。如果你想通过使用你的集群处理你的文件大小为 40 MB(假设 64Mb 块大小)超过 1 个映射器,然后将 mapred.max.split.size 设置为你使用的值,默认情况下是 Long.MAX_VALUE .

拆分大小由公式计算

max(mapred.min.split.size, min(mapred.max.split.size, blocksize))

所以在你的情况下你会得到(假设你将 maxsplitsize 设置为 15MB。

max(1 byte(by default),min(15MB,64MB))

您的拆分大小将设置为 15MB。