Algorithm mapreduce中是否有可以并行执行的非交换还原程序?

Algorithm mapreduce中是否有可以并行执行的非交换还原程序?,algorithm,hadoop,parallel-processing,mapreduce,distributed-computing,Algorithm,Hadoop,Parallel Processing,Mapreduce,Distributed Computing,一些操作,如中值和均值,是非交换的。在这种情况下,似乎只能有一个减速器,因为减速器需要具有全局视图。map reduce中是否有任何可以并行执行的非交换减缩器?当遇到非交换操作时,人们真的使用map reduce吗?还是在一台功能强大的机器上运行?是否有将非交换运算分解为交换运算的常用方法 谢谢我不知道“交换”这个词在这里是否合适,但我明白你的意思 在hadoop中,映射后阶段实际上分为两个步骤:具有相同签名的组合器和还原器。组合器在映射器上运行,以减小输出的大小,然后再对其进行键排序并发送给还

一些操作,如中值和均值,是非交换的。在这种情况下,似乎只能有一个减速器,因为减速器需要具有全局视图。map reduce中是否有任何可以并行执行的非交换减缩器?当遇到非交换操作时,人们真的使用map reduce吗?还是在一台功能强大的机器上运行?是否有将非交换运算分解为交换运算的常用方法

谢谢

我不知道“交换”这个词在这里是否合适,但我明白你的意思

在hadoop中,映射后阶段实际上分为两个步骤:具有相同签名的
组合器
还原器
。组合器在映射器上运行,以减小输出的大小,然后再对其进行键排序并发送给还原器。如果您只指定了一个
减速器
,那么它将同时用于这两个减速器;但是你可以把它们分开,做的比你想象的多得多

执行计数操作的简单案例使用计数减速机,它可用于联合收割机步骤和减速机步骤。这就减少了通过导线多次发送相同密钥的需要

通过定义不同的合并器和还原器,您可以获得计算平均值的类似效率。例如,映射器输出与数值和计数1对应的值
(数字,1)
。组合器可以将一组值映射到
(求和,计数)
元组或
(平均值,计数)
元组,而减缩器可以使用计数的权重对这些值进行聚合以产生平均值。(顺便说一句:您可以大大减少使用添加大量数字时的错误)。这使得映射者可以进行一些组合,就像在一个简单的计数示例中一样


您可以在一个map reduce步骤中完成许多聪明的事情。然而,我认为这对于中位数来说是不可能的;在这种情况下,您实际上必须通过一台机器的状态发送所有号码。

Hi@Andrew_Mao,谢谢您的重播。所以,我猜你的意思是我们可以假设减缩器是“可交换的”(请让我知道在这个场景中是否有更好的词)?否则(比如说中间值),我们可以启动一个map-only作业,并在一台机器上执行减缩部分。嗨,我不理解你的问题“我们可以假设减缩器是可交换的”。交换运算符意味着它对操作数的顺序不敏感,而这里我们讨论的是能够使用相同的减缩器进行组合和减缩,或者需要不同的减缩器才能得到结果的区别。顺便说一下,其他人已经讨论了中位数的近似值:,这里有一些关于这个相关问题的讨论