【DataWhale组队学习】大数据处理导论笔记-4

分布式并行编程模型MapReduce

MapReduce模型简介

设计理念:计算向数据靠拢–一个集群中mapreduce框架会将map程序就近的在HDFS数据所在节点运行,讲计算节点、存储节点放在一起运行,减少节点间数据移动开销。

Master/slave架构:

  • master:jobtracker;负责作业和任务调度,监控执行,重新调度已失败的任务

  • slave:tasktracker;负责执行由jobtracker指派的任务

在mapreduce的整个执行过程中,map任务的输入文件、reduce任务的处理结果都保存在分布式文件系统,而map任务处理得到的中间结果则保存在本地磁盘中。

MapReduce各个执行阶段

  1. 用inputformat做map前的预处理,inputsplit对文件进行处理和运算的输入单位,记录要处理的数据位置和长度
  2. recordreader(RR)根据inputsplit信息来处理,转换成适合map任务读取的键值对,输入至map
  3. map根据用户自定义的映射规则,输出<key,value>作为中间结果
  4. shuffle:对map输出进行分区、排序、合并、归并等操作,得到<key,value-list>中间结果,交给对应reduce程序处理。
  5. reduce以<key,value-list>作为输入,输出给outp,utformat模块
  6. outputformat验证输出目录是否存在,及结果类型是否符合配置文件配置类型,都满足则输出reduce结果到分布式文件系统
shuffle过程
  • Map端操作

    map输出结果首先被写入缓存,缓存满时启动溢写操作,将缓存数据写入磁盘文件并清空缓存。随map任务进行磁盘会生成多个溢写文件,在map任务全部结束前溢写文件会被归并成一个大磁盘文件,通知相应reduce任务来领取自己所需处理的数据。

    步骤:

    • 输入数据和执行map任务
    • 写入缓存
    • 溢写(分区、排序、合并)(写入溢写文件所有键值对,都是经过分区和排序的)
    • 文件归并:对于具有相同key的键值对会被归并成一个新的键值对。若磁盘中已经生成的溢写文件超过min.num.spills.for.combine(用户可修改),则运行combine
  • reduce端操作

    reduce从map端不同map机器领回自己所需处理的数据,对数据进行归并(merge)后交给reduce处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值