配置Hadoop为每个密钥使用不同的Reducer进程?

时间:2013-04-08 16:59:35

标签: hadoop hadoop-streaming

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

我注意到每个Reducer都会通过sys.stdin获取与多个密钥相关联的所有值。

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

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

2 个答案:

答案 0 :(得分:1)

每个映射器必须知道可用的reducer总数,因为它为每个reducer生成一个输出文件。如果在启动作业之前知道键的数量,则可以将作业配置为具有多个缩减器。否则你运气不好,因为直到映射器完成后才能知道密钥的总数。

答案 1 :(得分:0)

是的,如果您知道映射器将发出的密钥总数。你可以把它设置为 job.setNumReduceTasks(int n)

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

mapred.tasktracker.reduce.tasks.maximum

它将加速减少过程。但是,每个reducer都以jvm任务的形式运行。所以你的配置应该能够处理将产生的jvms数量