时间:2010-07-26 01:52:50

标签: amazon-web-services hadoop mapreduce

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

答案 2 :(得分:0)

您不需要减速机。您可以在作业配置阶段将减速器数量设置为0,例如

job.setNumReduceTasks(0);

此外,为确保每个映射器处理一个完整的输入文件,您可以告诉hadoop输入文件不可拆分。 FileInputFormat有一个方法

protected boolean isSplitable(JobContext context, Path filename)

可用于将文件标记为不可拆分,这意味着它将由单个映射器处理。有关文档,请参阅here。 我只是重新阅读了你的问题,并意识到你的输入可能是一个包含文件名列表的文件,所以你很可能想要拆分它,或者它只能由一个映射器运行。

我在你的情况下会做的是输入,这是s3中的文件名列表。映射器输入是一个文件名,它下载并运行你的exe。然后将此exe运行的输出上载到s3,映射器移动到下一个文件。然后映射器不需要输出任何东西。虽然输出处理的文件名可能是个好主意,但您可以在之后检查输入。使用我刚刚概述的方法,您不需要使用isSplitable方法。