请选择 进入手机版 | 继续访问电脑版

好程序员-千锋教育旗下高端IT职业教育品牌

400-811-9990
我的账户
好程序员

专注高端IT职业培训

亲爱的猿猿,欢迎!

已有账号,请

如尚未注册?

[BigData] 好程序员大数据培训分享MapReduce经验杂谈十则

[复制链接]
叶子老师 发表于 2019-7-12 17:04:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
  好程序员大数据培训分享MapReduce经验杂谈十则关于MapReduce的相关知识点,因为学识浅薄,可能会有遗漏的的地方,欢迎各位补充!
  下面是我个人认为非常值得注意的几处知识点,希望能为大家的学习提供便利。
图片3.png
  1. HDFS上的文件以行读取,其中key是行中首字母的起始位置,value是该行的文本内容,一行为一对KV键值对。
  2. 通过FileInputFormat将文件切分成split块,FileInputFormat只会划分比block大的部分。切割完毕后通过TextInputFormat对split块中的每行记录解析为K1V1键值对。
  3. 一个split块对应一个mapper task任务,map接收K1V1键值对后执行map方法,后输出新的K2V2键值对。
  4. K2V2键值对添加到环形缓冲区中,当数据量达到80%(默认数据,可以使用参数mapreduce.map.sort.spill.percent修改)之后,这80%环形区会触发溢出操作,然后被封锁,mappertask会向剩余部分继续写入数据。同时会对写完的数据执行partitioner(分区)操作,然后对不同分区中的数据进行排序分组(sort)操作,最后对分组后的数据归约(combiner,通过Key进行归并,减少reduce的负担)。
图片4.png
  5. 每发生一次溢出操作就会在磁盘中生成换一个磁盘文件,当磁盘文件写入完毕后,环形缓冲区中的封锁区会清空数据,继续接收数据写入。
  6.mapper task的数据全部写出完毕后,会将多个磁盘文件及内存中多余的数据写出到一个本地磁盘文件中。
  7.此时会通知APPMaster完成map task,当完成数量达到5%时,就启动reduce task任务。
  8. reduce生成fetcher线程组(默认5个)将不同分区的的数据copy到不同的reduce节点上。(一个mapper上的分区可能会被发送到多个reduce,同样一个reduce也会接收来自不同的mapper的分区)
  9.fetcher线程组将数据写入内存的过程中,内存满75%时,也会发生溢出操作,触发sort和merge操作,最后生成一个磁盘文件(merge操作一般是从内存到磁盘,最后再从磁盘到磁盘)
  10. 最后磁盘文件的数据会被分组group来提供给reduce方法处理。根据 FileOutputFormat写入目标文件里。
  综上,为MapReuce的细节部分,这部分操作大家比较了解,但是马虎之下容易实现操作性的错误,简要记录十点,望大家多多留意,大数据时代,我们无法安然避世,就业的压力摆在面前,只有金甲加身,付出汗水才能获得高薪,最后送大家一句话,不忘初心,方得始终。
好程序员大数据培训官网:http://www.goodprogrammer.org/bigdata.shtml

精彩内容,一键分享给更多人!
回复

使用道具 举报

您需要登录后才可以回帖

本版积分规则

关注我们
好程序员
千锋好程序员

北京校区(总部):北京市海淀区宝盛北里西区28号中关村智诚科创大厦

深圳西部硅谷校区:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619

杭州龙驰智慧谷校区:浙江省杭州市下沙经济技术开发区元成路199号龙驰智慧谷B座7层

郑州校区:郑州市二七区航海中路60号海为科技园C区10层、12层

Copyright 2007-2019 北京千锋互联科技有限公司 .All Right

京ICP备12003911号-5 京公安网11010802011455号

请您保持通讯畅通1对1咨询马上开启