mapreduce

mapreduce程序5个阶段

input

map

shuffle

reduce

output

shuffle过程实现的功能

分区:

         决定当前的key交给那个reduce进行处理

         相同的key,必须由同一个reduce进行处理

         默认情况下:根据key的hash值 对reduce个数取余

分组:

         将相同key的value进行合并

         key相等的话,将分到同一个组里

          mapreduce阶段,一行调用一次map方法,一种key调用一次reduce方法

排序:

         安装key的字典顺序进行排序

详细的过程:

 

 

       -》map端的shuffle

            -》spill:溢写

              -》每一个map处理之后的结果将会进入环形缓冲区(内存:100M)

              -》分区:对每一条keyvalue进行分区(打标签)

                    hadoop      1    reduce0

                    hive           1     reduce1

                    hbase          1    reduce1

                     spark        1     reduce1

                      hadoop    1     reduce0

                -》排序  :将相同分区的数据进行分区内排序

                    hadoop      1    reduce0

                      hadoop    1     reduce0

                     hive           1     reduce1

                       hbase          1    reduce1

                     spark        1     reduce1

        -》当环形缓存区达到阈值80%,开始溢写

                将分区排序后的数据溢写道磁盘变成文件file1

                最终会生产多个小文件

            -》merge合并:将spill生产的小文件合并

                  -》排序:将相同分区的数据进行排序

                       file1

                    hadoop      1    reduce0

                      hadoop    1     reduce0

                     hive           1     reduce1

                       hbase          1    reduce1

                     spark        1     reduce1

                       file2

                    hadoop      1    reduce0

                      hadoop    1     reduce0

                     hive           1     reduce1

                       hbase          1    reduce1

                     spark        1     reduce1

 

 

                       endfile

                    hadoop      1    reduce0

                      hadoop    1     reduce0

                    hadoop      1    reduce0

                      hadoop    1     reduce0

                     hive           1     reduce1

                     hive           1     reduce1

                       hbase          1    reduce1

                     hbase          1    reduce1

                     spark        1     reduce1

                     spark        1     reduce1

     --》map task结束,通过app master,appmaster通知reduce过来拉取数据

 

 

 

 

       -》reduce端shuffle

            -》

               maptask-1

                    hadoop      1    reduce0

                      hadoop    1     reduce0

                    hadoop      1    reduce0

                      hadoop    1     reduce0

                       hbase          1    reduce1

                     hbase          1    reduce1

                     hive           1     reduce1

                     hive           1     reduce1

                     spark        1     reduce1

                     spark        1     reduce1

 

               maptask-2

                    hadoop      1    reduce0

                      hadoop    1     reduce0

                    hadoop      1    reduce0

                      hadoop    1     reduce0

                       hbase          1    reduce1

                     hbase          1    reduce1

                     hive           1     reduce1

                     hive           1     reduce1

                     spark        1     reduce1

                     spark        1     reduce1

            -》reduce启动多个线程通过网络到每台机器上去拉取属于自己分支的数据

                reduce1:

                       hbase          1    reduce1

                     hbase          1    reduce1

                     hive           1     reduce1

                     hive           1     reduce1

                     spark        1     reduce1

                     spark        1     reduce1

 

                       hbase          1    reduce1

                     hbase          1    reduce1

                     hive           1     reduce1

                     hive           1     reduce1

                     spark        1     reduce1

                     spark        1     reduce1

           =》merge合并:将每个map task的结果中属于自己分区的数据进行合并

             -》排序:将整体属于我分区的数据进行排序

 

                       hbase          1    reduce1

                     hbase          1    reduce1

                       hbase          1    reduce1

                     hbase          1    reduce1

                     hive           1     reduce1

                     hive           1     reduce1

                     hive           1     reduce1

                     hive           1     reduce1

                     spark        1     reduce1

                     spark        1     reduce1

                     spark        1     reduce1

                     spark        1     reduce1

 

     -》分组:对相同的key的value进行合并

         hbase ,list<1,1,1,1>

         hive  ,list  <1,1,1,1>

        spark ,list<1,1,1,1>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值