大数据 第四章 mapreduce总体工作机制

mapreduce工作机制

工作机制

1.mapreduce框架,客户端会启动MRappMaster程序,MRAppMaster会启动yarn child(map task)产生数据之后,会启动yarn child(reduce task)进行处理。

2.划分输入切片
Job客户端负责划分:扫描输入目录中的所有文件,遍历每一个文件:按照128M规则划分范围,生成如下格式:
FileSplit0:/wordcout/input/a.txt 0-128m
FileSplit1:/wordcout/input/a.txt 128-256m
FileSplit2:/wordcout/input/a.txt 256-384m
根据生成的这些文件格式,生成对应的map task实例,来读取文件,具体是TextInputFormat类来读的,每次读一行,LineRecordReader.next(),生成一次key-value,key是行起始偏移量,value是行内容。在WcMapper.map(k,v,context)正好是上面产生的内容,然后context.write(k,v).MapOutputCollector放到缓存中储存起来,存储的结构是环形缓冲区,当存储的容量占据80%之后,启动Spiller线程进行分区和排序,分区是按照partitioner的getPartition(),排序是根据key的compareTo(),分区排序好的数据会存放到机器的本地磁盘上。最后会调用Merge进行合并。
至此map task工作完成
3.reduce task开始工作
WcReduce类的reduce(k,迭代器,context)方法中进行聚合,context.write(k,v)写到文件中。TextOutputFormat.getRecordWriter()进行文件写入LineRecordWriter.write(k,v)
maptask生成的数据传给reducetask的过程叫shuffle

输入输出格式

默认是文本格式的TextOutputFormat
可以设置为SequenceFileOutputFormat,是将对象直接序列化,进行存储,读取的时候也得相对应地读取序列化的对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值