MapReduce

MapReduce

分布式数据处理工具、分布式计算处理框架
MR 主要思想:分久必合,合久必分。
MR 架构 ---- kv 格式(key + value)

工作原理

map

  1. 假设 计算的数据都在 hdfs 上,从 hdfs 获取数据进行计算 – 寻找需要计算的位置
  2. map 会将 hdfs 上的大文件进行相应的切割 ---- 切割成一个个的 split 切片(默认大小与 block 大小一致)---- block = map = maptask
为了能把数据完整的切割,与 block 块近似相等
split 是 逻辑划分
eg:
若设置 split 大小为 256M
2block = split = maptask
若想提高 map 并行度,减小 split 大小
  1. map 将数据进行切割之后进行计算 ---- 每个 map 会将自己的计算结果放入内存缓冲区(默认100M)

    放入内存缓冲区之前 ---- 打标签 ---- 分区(默认 hashpartition)---- map 产生的数据的 key 的 hashcode 与 reduce 个数进行取模

    分区的作用:哪一个数据由哪一个 reduce 处理

  2. 当 buffer 满了之后,会溢写到磁盘中

    优先写入到 80M 中,当 80M 写完之后,会将数据溢写到磁盘上

    在溢写之前,会对内存中的小文件进行一个排序 ---- 写在磁盘中的小文件 都是 有序的

  3. 溢写完之后,会进行一次小的 merge

    目前为止:产生的磁盘小文件 ---- 相同种类的在一起,并且还是有序的

    map端:产生一个个的有序文件

reduce

  1. 将 map 端产生的数据 从磁盘拉取到内存

    reduce 默认占用内存的 70% (66%+4%) ---- 超过 66% 后会发生溢写

  2. 在发生溢写之前会进行一次排序(从 map 端拉取的文件都是有序的,但是 不同 map 之间是无序的,merge 之后会小的排序)

  3. 排序之后会产生很多的小文件 ---- 小文件进行一次合并 ---- 合并成简单有序的小文件

  4. 合并小文件之前会对文件进行排序 — 小文件已经有序,合并为大文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值