Hadoop mapreduce过程key 和value分别存什么值

Hadoop mapreduce过程key 和value分别存什么值Hadoop mapreduce过程key 和value分别存什么值

大家好,又见面了,我是你们的朋友全栈君。

转自:https://www.cnblogs.com/gaopeng527/p/5436820.html

这里以wordCount为例,直接看图就懂了:

(1)inputFormat将hdfs上要处理的文件一行一行的读入,将文件拆分成splits,由于测试用的文件较小,所以每个文件为一个split,并将文件按行分割形成<key,value>对,如图4-1所示。这一步由MapReduce框架自动完成,其中偏移量(即key值)包括了回车所占的字符数(Windows和Linux环境会不同)。

这里是把每个文件按行处理,下图有两个文件,每个文件有两行,每一行的开头字符所在位置的偏移量 ,第一行的开头偏移量自然是0,hello world共10个偏移量,加上中间的空格11个偏移量,回车再算一个,第二行的开头偏移量是12.

 

 image

图4-1 分割过程

 

  2)将分割好的<key,value>对交给用户定义的map方法进行处理,生成新的<key,value>对,如图4-2所示。

 这里是用户自定义的map处理程序,每一行的字符按“ ” 分割,分割的每一个元素都记为1,也就是map节点的所有value都是1

 image

图4-2 执行map方法

 

  3)得到map方法输出的<key,value>对后,Mapper会将它们按照key值进行排序,并执行Combine过程,将key至相同value值累加,得到Mapper的最终输出结果。如图4-3所示。

 

 image

图4-3 Map端排序及Combine过程

 

  4)Reducer先对从Mapper接收的数据进行排序,再交由用户自定义的reduce方法进行处理,得到新的<key,value>对,并作为WordCount的输出结果,如图4-4所示。

 

 image

图4-4 Reduce端排序及输出结果

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106122.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021年Java程序员20个超强练手项目

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章最近一直被问到的一个问题:因为疫情的问题,很多同学说自己没去公司进行实习,能接触到的项目很少,自己不知道怎么去做项目,…

    2022年2月28日
  • 一款自制的视频录制软件

    一款自制的视频录制软件是利用opencv库的,平时自己需要录制东西,但是网上大部分的软件只录制屏幕,不能录制摄像头视屏,所以自己动手弄了个不是特别好用,但也讲究这凑合程序源代码:http://download.csdn.net/source/3578833

    2022年6月17日
  • Maven环境的搭建[通俗易懂]

    Maven环境的搭建[通俗易懂]前言:项目需要的外jar包的时候,这时候建立一个普通的web项目是一个比较头痛的事,它需要新建web项目,配置好tomcat(8.0),然后手动复制所需jar到lib下面然后addbuildpath,把需要的jar都下载好并且导入(太麻烦,不灵活),而且可能项目中的框架比较多,导入的jar包有重复的,那么导入重复的jar包启动项目肯定会报错,所以博主教大家手把手搭建maven环境,使用…

    2022年5月14日
  • js跨域请求的三种方法_jQuery

    js跨域请求的三种方法_jQueryJavaScriptjQuery:Ajax、跨域。

    2022年10月30日
  • CSS3-transition「建议收藏」

    CSS3-transition「建议收藏」1、transition代表css3中的过渡,可以使元素从一种样式逐渐改变为另一种的效果。2、transition:height2s;表示需要渐变的是元素高度height,渐变时间是2s。tra

    2022年7月4日
  • RuntimeError: CUDA out of memory(已解决)[通俗易懂]

    今天用pytorch训练神经网络时,出现如下错误:RuntimeError:CUDAoutofmemory.Triedtoallocate144.00MiB(GPU0;2.00GiBtotalcapacity;1.29GiBalreadyallocated;79.00MiBfree;1.30GiBreservedintotalbyPyTorch)明明GPU0有2G容量,为什么只有79M可用?并且1.30G已经被PyTorch占用了。

    2022年4月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号