栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 数据挖掘与分析

分布式计算框架 MapReduce

分布式计算框架 MapReduce

文章目录
  • MapReduce 介绍
  • Shuffle 过程
  • WordCount
  • Combiner

MapReduce 介绍
  • MapReduce 是比较死板的计算框架, 高度抽象
  • input 数据集 -> Map 映射成中间数据集(K, V) -> reduce 相同 Key 作为一组迭代计算
  • 需要程序员思考数据特征, 设计什么是 Key, 什么是 Value
  • 从作业的角度讲, MapReduce 计算框架只有两类作业, MapTask 和 ReduceTask

  • 四个阶段
    • split 切片 (逻辑切片), 将文件进行拆分
    • map 计算 (K, V, P映射), map 数量与 split 数量是对应的关系
    • shuffle 洗牌 (把相同的 Key 交给 Reduce 处理), map 是在不同机器上并行处理的, 需要通过 shuffle 将相同 key 值的数据分发到同一个节点上去合并
    • reduce 迭代计算
  • split 和 shuffle 由框架实现, 需要程序员编程实现的只有 map 和 reduce, 这也是 MapReduce 这个称呼的来源
Shuffle 过程

  • 当 map 阶段将数据映射成 K,V,Partition 后 , 会先写入 buffer in memory 内存缓冲区
  • 在内存缓冲区中按照 partition 进行第一次排序 (reduce 对应 partition, 一个 partition 中可能有不同K)
  • 在内存缓冲区中的 parititon 内按照 K 进行第二次排序
  • 内存缓冲区满了之后生成小文件, 一个map端会生成多个小文件, 这些小文件内部有序, 但是小文件之间无序, 所以会进行第三次排序, 将多个小文件合成一个大文件, 作为一个map端的结果
  • 多个map并行产生的map端结果文件由reduce端拉取, 还会进行第四次排序, 相同的key放在一起交给 reduce 执行
  • 每个 map 任务的计算结果都会写入到本地文件系统,等 map 任务快要计算完成的时候,MapReduce 计算框架会启动 shuffle 过程,在map 端调用一个 Partitioner 接口,对 map 产生的每个进行 reduce 分区选择,然后通过 http 通信发送给对应的 reduce 进程。这样不管 map 位于哪个服务器节点,相同的key一定会被发送给相同的reduce进程。reduce端对收到的进行排序和合并,相同的key放在一起,组成一个传递给reduce执行。
WordCount

  • wordcount 统计每个单词出现的数量
  • K, V 必须是封装类, Writable 序列化(分布式程序数据交互), Comparable 比较器(实现具体排序)
Combiner
  • combiner 是 map 运算后的可选操作,它实际上是一个本地化的 reduce 操作,它主要是在 map 计算出中间文件后做一个简单的合并重复 key 值的操作
  • map 在遇到一个单词时就会记录为 1,那么 map 输出文件冗余就会很多,因此在 reduce 计算前对相同的 key 做一个合并操作,需要传输的数据量就会减少,传输效率就可以得到提升
  • 但并非所有场景都适合使用 combiner,使用它的原则是 combiner 的输出不会影响到 reduce 计算的最终输入,例如:求总数,最大值,最小值时都可以使用 combiner,但是做平均值计算则不能使用 combiner

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/278845.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号