大家好 ,欢迎来到疯狂的代码,继承上次疯狂的代码1后 ,鄙人感觉写的不是很好 所以这次在精确的总结一下hadoop map 和 reducer阶段的详细步骤:首先 map阶段主要是对数据进行分割 即split 然后产生k2和v2 对于k2 和v2如何生成 ,这需要我们数据的具体分析 ,一般我们要的那个数据点可以作为k2,比如我们要对一个数据进行排列 其中有两个点,一个是相同的数据,一个是相同数据之间的排序,这个时候k2就有两个,所以我们可以封装为一个bean 这样就方便获取值然后根据不同情况去排序,在map阶段的奥k2 v2后,我们还会经过数据的shuffle阶段 鄙人觉得 hadoop的执行shuffle阶段非常重要 shuffle阶段有分区 排序 规约 分组 首先来说一下分区,分区就是对数据打标记,比如说你去这里,他去哪里,被打上标记的会分别分到不同的reduce里面执行,比如说我们求数据的TopN 要先对数据打标机,让相同的数据id分到一个reduce,然后在执行接下来的排序,即witableComparatable 这样我们就得到同一组的数据的排序, 然后即使规约 规约就是对数据的maptask阶段的局部汇总 它是继承reducer的 然后就是分组 分组就是对同一建的值进行归总 得到的是新的k2 v2 是一个集合,最后执行reducer reducer阶段把心得k2 v2变为我们想要的k3 v3 这就是我们得到了想要的数据 然后...........................没词了
|
|