大数据之Hadoop的mapreduce

一、MapReduce工作流程1

  • MapReduce将输入的数据集逻辑切片split
  • map任务以并行方式处理切片数据
  • 框架对map输出排序,然后将数据发送给reduce
  • MapReduce的输入输出数据存在于同一个文件系统HDFS
  • 框架负责任务调度、任务监控和失败任务的重新执行
  • MapReduce处理键值对形式的很多键值对输入,生成键值对形式的很多键值对输出
  • 框架会对键和值序列化,因此键类型和值类型需要实现Writable接口,框架对键进行排序,因此必须实现WritableComparable接口
  • map输出键值对类型和reduce键值对输入类型一致
  • map的输入键值对类型和输出键值对类型一般不一致
  • reduce的输入键值对类型和输出键值对类型一般不一致

​​​​​​​二、MapReduce工作流程2

  • 每个block会有map任务
  • block切分为切片,每个切片对应一个map任务,默认一个block一个切片,一个map
  • map默认按行读取切片数据,组成键值对<当前行字节偏移量, "读到的行字符串">
  • map函数对该键值对进行计算,输出若干键值对。<key, value, partition>
    • partition指定该键值对由哪个reducer进行处理
  • map输出的kvp写到环形缓冲区,环形缓冲区默认100MB,阈值80%,当环形缓冲区达到80%就向磁盘溢写小文件,该小文件首先按照分区号排序,相同分区号的按key进行排序
  • 默认如果落磁盘的小文件达到了3个,则进行归并,归并的大文件也是按分区号排序,相同分区号按照key进行排序,只是一个归并。
  • 如果map任务处理完了,它的输出被下载到reducer所在主机
    • 按照HTTP GET的方式下载reducer,reducer发送HTTP GET请求到mapper主机下载数据,该过程是洗牌shuffle
  • 每个map任务都要经历运行结束洗牌的过程
  • 等所有map任务都运行结束,并且洗牌结束,每个reducer获取到它自己应得的所有数据,此时开始reducer处理过程
  • 如果有时间,reduce会对洗牌获取的数据进行归并落磁盘
    • 如果没有时间,也归并,只是可能不落磁盘,直接交给reduce方法进行迭代处理
    • 洗牌获取到的数据也可能不落磁盘,此时归并的键值对来源可能是磁盘的和内存的一个混合
  • reduce按照key进行分组,每个分组调用一次reduce方法,该方法迭代计算,将结果写到HDFS输出

三、MapReduce作业提交流程

  • 客户端,提交MapReduce作业
  • YARN的资源管理器(Resource Manager),协调集群中计算资源的分配
  • YARN的节点管理器(Node Manager),启动并监控集群中的计算容器
  • MapReduce的Application Master,协调MapReduce作业中任务的运行。Application Master和MapReduce任务运行于容器中,这些容器由resourcemanager调度,由nodemanager管理
  • 分布式文件系统(一般是HDFS),在组件之间共享作业数据。Job对象的submit方法创建了一个内部的JobSubmitter实例并调用该实例的submitJobInternal方法。一旦提交了作业,waitForComletion方法每秒钟轮询作业的执行进度,如果进度发生了变化,则向控制台报告进度。当作业成功完成,展示作业计数器的数据,否则展示作业失败的错误日志信息

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值