MapReduce运行流程分析(3)

<hello, 1>                0                                          <java, 1>                          0 

<hadoop, 1>            1                                        <java, 1>                        0

                                             <java, 1>                0                                          <map, 1>                        0

                                             <jvm, 1>                  1                                        <reduce, 1>                      1

                                             <qaz, 1>                  1                                          <spark, 1>                        0

                                             <word, 1>                1                                          <storm, 1>                      1  

combine过程:这个过程默认是没有的,需要明确指定combiner。combiner其实就是一个reducer,可以让数据交给reduce任务之前,进行一些计算、合并。它的意义在于,使数据进一步减少,减轻了                      reduce任务通过网络获取数据的压力和reduce处理数据的压力。combiner也可以自己定制,每个溢写文件都会combine。

combiner会通过一个比较器对key进行比较,相同的key(比较结果为0,比较算法可以定制),会被放到一个集合的迭代器中,然后迭代进行一次reduce运算,产生一个输出。

combine之后的数据:

<abc, 1>                0                                        <hdfs, 1>                        1

<hello, 1+1>            0                                        <interface, 1>                  1 

<hadoop, 1>            1                                        <java, 1+1>                    0

                                             <java, 1>                0                                          <map, 1>                        0

                                             <jvm, 1>                  1                                        <reduce, 1>                      1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13813.html