我在网上看了很多链接。这里有几个链接link1,link2。但我不能理解。他们到底在做什么。你能简单地解释一下这个算法吗。是的,下一个问题,我有一个想法。告诉我这是对还是错。算法-在绘图员之间把整数除以。Map器-所有Map器都使用基本方法(任何标准的排序算法,这里没有使用概念)。当所有的Map绘制者都完成了他们的任务。创建一个最小堆,其节点数等于Map器数。使用这个最小堆对整个数据进行排序(使用最小堆(min-heap)方法可以很容易地对已排序列表的数量进行排序。上述算法正确吗?
ua4mk5z41#
是的,你是对的。Map器使用快速排序和堆排序的混合排序。还原器只对Map器的排序输出进行n路合并。
zdwk9cvp2#
您提供的链接是为terasort提供的,因此我将尝试对其进行非常简短的解释。尽管另一个答案是正确的,因为一些hadoop排序算法使用了快速排序和-heapsort-mergesort的组合(我很确定你指的是mergesort,而不是heapsort)。我想很简单,terasort是这样的:假设我们要排序:2346246 7245242 8212345 1324623 4356234 9323244然后你不需要阅读整个记录来查看哪个数字是最大的,而只需要第一个数字。阅读时请记住这一点。对数据进行采样以了解记录的分布情况—了解范围。从每个记录中选择2个字节-可能是前2个字节(例如)bucket根据这2个字节确保bucket是“有序的”,因此bucket n的记录都小于bucket n+1中的记录对每个桶进行分类塔达!你已经把数据整理好了。
2条答案
按热度按时间ua4mk5z41#
是的,你是对的。
Map器使用快速排序和堆排序的混合排序。
还原器只对Map器的排序输出进行n路合并。
zdwk9cvp2#
您提供的链接是为terasort提供的,因此我将尝试对其进行非常简短的解释。尽管另一个答案是正确的,因为一些hadoop排序算法使用了快速排序和-heapsort-mergesort的组合(我很确定你指的是mergesort,而不是heapsort)。
我想很简单,terasort是这样的:
假设我们要排序:
2346246 7245242 8212345 1324623 4356234 9323244
然后你不需要阅读整个记录来查看哪个数字是最大的,而只需要第一个数字。阅读时请记住这一点。
对数据进行采样以了解记录的分布情况—了解范围。
从每个记录中选择2个字节-可能是前2个字节(例如)
bucket根据这2个字节确保bucket是“有序的”,因此bucket n的记录都小于bucket n+1中的记录
对每个桶进行分类
塔达!你已经把数据整理好了。