1
58
这里有一些细节 Hadoop's implementation for Terasort :
所以他们的诀窍是在地图阶段确定关键点。从本质上讲,它们确保单个减速器中的每个值都与所有其他减速器“预先排序”。 |
2
2
谷歌参考: MapReduce: Simplified Data Processing on Large Clusters
该链接有一个PDF和HTML幻灯片参考。 还有一个 Wikipedia page with description 带有实现引用。 也批评,
|
3
1
在阅读谷歌的MapReduce论文时,我也有同样的问题。 @尤瓦尔F 的 answer 几乎解决了我的难题。 在阅读本文时我注意到的一件事是分区中发生了魔力(在映射之后,在reduce之前)。
本文采用
只需将边界条件添加到 @尤瓦尔F 的 回答 要使其完成:假设Min(s)和Max(s)是采样键中的最小键和最大键;将所有键<Min(s)分区为一个reduce任务;反之亦然,将所有键>=Max(s)分区为一个reduce任务。 对采样键没有硬限制,例如最小或最大。只是,这些R键分布在所有键中越均匀,这个分布式系统越“并行”,reduce操作符出现内存溢出问题的可能性就越小。 |
4
0
只是猜测… 如果有一组巨大的数据,您可以将数据划分成若干块进行并行处理(可能按记录编号,即记录1-1000=分区1,依此类推)。 将每个分区分配/调度到集群中的特定节点。 每个集群节点将进一步将分区分割(映射)成自己的小分区,可能按键的字母顺序排列。因此,在分区1中,获取以a开头的所有内容,并将其输出到x的迷你分区a中。如果当前已经存在a(x),则创建一个新的a(x)。用序列号替换X(也许这是调度程序的工作)。也就是说,给我下一个唯一的ID。 将映射器(上一步)完成的作业移交(调度)到“reduce”群集节点。然后,reduce node cluster将进一步细化每个a(x)部分的排序,当所有映射器任务完成时,这些A(x)部分只会发生(当仍然有可能生成另一个小分区时,实际上不能开始对所有单词进行排序,从w/a开始)。将结果输出到最终排序的分区(即sorted-a、sorted-b等) 完成后,再次将已排序的分区合并到单个数据集中。此时,它只是n个文件的简单连接(如果只执行a-z操作,n可能是26),等等。 中间可能有中间步骤…我不确定:)。即在初始减少步骤之后进一步映射和减少。 |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |