zoukankan      html  css  js  c++  java
  • [hadoop]mapreduce原理简述

    1、用于map的输入,先将输入数据切分成相等的分片,为每一个分片创建一个map worker,这里的切片大小不是随意订的,一般是与HDFS块大小一致,默认是64MB,一个节点上存储输入数据切片的最大size就是HDFS的块大小,当设置的切片size大于HDFS块大小,会引起节点之间的传输,占用带宽。

    2、map worker调用用户编写的map函数对每个分片进行处理,并且将处理结果输出到本地存储(非HDFS)

    3、对map的输出进行combiner操作,这里的的combiner主要是减少map与reduce之间的数据传输量,不是必须的步骤,可以例举一个《hadoop: the definitive guide》中的例子求最大温度的处理。

      Fir Map Output:

        (1950, 0)

        (1950, 20)

        (1950, 10)

      Sec Map Output:

        (1950, 25)

        (1950, 15)

    在不调用combiner的情况下,是将map的输出数据都将传送到reduce那里,在reduce处理时,将会将如下数据作为输入:

        (1950, [0, 20, 10, 25, 15])

    在调用combiner的情况下,现在每个map本地对输出数据进行处理(即将当前的map的最大温度求出),然后再传输给reduce,如下:

      Fir Map Combined:

        (1950, 20)

      Sec Map Combined:

        (1950, 25)

    而此时reduce将会用如下数据作为输入,从而map与reduce之间的数据传输量得到降低:

        (1950, [20, 25])

    4、将combiner处理后的数据或者map的输出数据进行shuffle处理,所谓的shuffle处理是将数据中的记录通过partition操作映射到reduce中,从而保证每个reduce处理的是相同key的记录。注意partition函数可以进行自定义,也可以使用默认的partition函数,默认的partition是利用一个hash映射操作将相同key的记录映射到相同的reduce.

    5、reduce调用用户定义的reduce函数对数据进行处理,输出存入HDFS。

  • 相关阅读:
    七、正规式到正规文法与自动机
    正规文法与正规式
    Class文件加载详解
    ReentrantLock和Synchronized的区别
    synchronized的原理及锁升级
    (四)项目接入springcloud alibaba
    (三)项目搭建
    使用npm install安装前端项目依赖时报错
    java并发编程(二)
    (二)搭建虚拟机环境
  • 原文地址:https://www.cnblogs.com/fantasy01/p/4311941.html
Copyright © 2011-2022 走看看