Hadoop MapReduce 排序级别
Hadoop MapReduce Sorting levels
map reduce 程序中有多少级排序?排序是洗牌的一部分吗?我完全对此感到困惑?
能否请您提供 MR 工作流的流程图,包括所有步骤?非常感谢大家。
有图的好文章是A Beginners Guide to Hadoop and Blog on Clouder
排序和合并使用 SortComparator,分组使用 GroupingComparator。
二次排序是理解 hadoop 排序复杂性的最好例子。
更新:
在一个非常高的层面上,hadoop MR 可以看作是分布式的 Sort Merge。当 Mapper 工作时,它会为每个 Reducer(使用 SortComparator)产生排序的溢出,如果 Mapper 为每个 Reducer 产生了几个溢出,那么在 Mapper 端它可以使用 SortComparator 将它们排序合并成大溢出。在所有 Mappers 完成之前,Reducers 启动并开始从每个 Mapper 中提取它们的溢出,并使用 SortComparator 对它们进行排序合并。当所有 Mappers 完成并且每个 reducer 端的溢出都处于永久持有状态时,数据将被排序并且 Reducers 将使用 GroupComparator 来识别哪些排序的 Key/Value 对被 reduce 调用的 Iterator 值覆盖。
map reduce 程序中有多少级排序?排序是洗牌的一部分吗?我完全对此感到困惑?
能否请您提供 MR 工作流的流程图,包括所有步骤?非常感谢大家。
有图的好文章是A Beginners Guide to Hadoop and Blog on Clouder
排序和合并使用 SortComparator,分组使用 GroupingComparator。
二次排序是理解 hadoop 排序复杂性的最好例子。
更新:
在一个非常高的层面上,hadoop MR 可以看作是分布式的 Sort Merge。当 Mapper 工作时,它会为每个 Reducer(使用 SortComparator)产生排序的溢出,如果 Mapper 为每个 Reducer 产生了几个溢出,那么在 Mapper 端它可以使用 SortComparator 将它们排序合并成大溢出。在所有 Mappers 完成之前,Reducers 启动并开始从每个 Mapper 中提取它们的溢出,并使用 SortComparator 对它们进行排序合并。当所有 Mappers 完成并且每个 reducer 端的溢出都处于永久持有状态时,数据将被排序并且 Reducers 将使用 GroupComparator 来识别哪些排序的 Key/Value 对被 reduce 调用的 Iterator 值覆盖。