配置hadoop为每个键使用不同的reducer进程?

mwg9r5ms  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(341)

关于我的问题,我有一个用python编写的流处理程序。
我注意到每个 Reducer 通过获取与多个键关联的所有值 sys.stdin .
我更希望sys.stdin只具有与一个键关联的值。这在hadoop中是可能的吗?我认为每个键有一个不同的进程是完美的,但是找不到提供这种行为的配置。
有人可以帮助我的信息或代码,可以帮助我这一点?

huus2vyu

huus2vyu1#

每个Map器必须知道可用的缩减器的总数,因为它为每个缩减器生成一个输出文件。如果在开始作业之前知道键的数目,可以将作业配置为具有那么多的减速器。否则你就不走运了,因为在Map程序完成之后才能知道密钥的总数。

1cklez4t

1cklez4t2#

是的,如果您知道Map器将发出的关键帧总数。您可以将其设置为job.setnumreducetasks(int n)
另外,可以在mapred-site.xml中将并行运行的减速器总数定义为
mapred.tasktracker.reduce.tasks.maximum
它将加速还原过程。但是,每个reducer都作为jvm任务运行。因此,您的配置应该能够处理将生成的JVM的数量

相关问题