有什么如何级联/烫伤优化的通知map端评价他们使用所谓的局部聚集。 它实际上是更好的方法,然后合路? 有没有对一些常见的Hadoop任务的任何性能比较(字数例如)? 如果是这样的hadoop阉将支持这一未来?
Answer 1:
在实践中,也有更多的好处,从局部聚集比使用组合的。
其中组合是有用的情况是有限的。 此外,组合优化吞吐量由任务所需的数量,而不是减少的数量 - 这是一个微妙的区别,其加起来显著业绩增量。
有一种用例在大型分布式工作流局部聚集的范围更广。 另外,部分聚合可以被用于优化的一个工作流所需的作业步骤的数量。
实例示于https://github.com/Cascading/Impatient/wiki/Part-5其使用CountBy
和SumBy
局部聚集体。 如果你回头看代码提交历史在GitHub上该项目,有以前使用GroupBy
和Count
,这就造成了更多的降低。
Answer 2:
它是某种类型的聚合的更好。 级联聚合是多一点灵活的,以什么可以聚合。 从级联点(重点煤矿):
层叠不支持所谓的MapReduce组合器。 组合器是非常强大的,因为它们减少了映射器和减速齿轮之间的IO。 为什么所有的映射器将数据发送到减速时,你可以计算一些数值地图一侧,并在减速将它们结合起来。 但是, 合路器仅限于联想,只可换的功能,如“总和”和“最大”。 而为了工作,从Map任务发出的值必须被序列化,排序(反序列化和比较),再次反序列化和操作的,其中再一次的结果是序列化和分类。 合贸易CPU在IO收益 。
级联通过提供执行部分聚合地图侧,还结合他们减少侧的机构采用不同的方法。 但级联选择交易存储器中以高速缓存值IO收益(最高阈值)。 这种方法绕过了不必要的序列化,反串行化,并分选步骤。 它还允许将实现的任何聚合函数,不只是联想和交换的。
文章来源: Partial aggregation vs Combiners which one faster?