0

与我的问题相关,我有一个用 Python 编写的流式处理过程。

我注意到每个Reducer都通过sys.stdin.

我希望 sys.stdin 仅具有与一个键关联的值。Hadoop有可能吗?我认为每个键的不同进程将是完美的,但找不到提供这种行为的配置。

有人可以帮助我提供可以帮助我的信息或代码吗?

4

2 回答 2

1

每个 mapper 都必须知道可用的 reducer 总数,因为它为每个 reducer 生成一个输出文件。如果您在开始作业之前知道键的数量,则可以将作业配置为具有那么多减速器。否则你就不走运了,因为直到映射器完成后才能知道键的总数。

于 2013-04-08T21:36:36.567 回答
0

是的,如果您知道映射器将发出的键总数。您可以将其设置为 job.setNUmReduceTasks(int n)

此外,可以并行运行的减速器总数可以在 mapred-site.xml 中定义为

mapred.tasktracker.reduce.tasks.maximum

它将加快减少过程。但是,每个减速器都作为 jvm 任务运行。因此,您的配置应该能够处理将产生的 jvm 数量

于 2013-04-09T06:50:11.293 回答