combiner hadoop

Combiner用来在map输出之前先做一次合并,减少map和reduce节点之间的数据传输,优化mapreduce。

Combiner相当于是一个小的reduce,如下所示

map:(key1,value1) ——> list(key2,value2)

combiner:(key2,list(value2)) ——> list(key2,value2)

reduce:(key2,list(value2)) ——> list(key3,value3)

注意一下几点:

1、如果当前集群在很繁忙的情况下job就是设置了也不会执行Combiner。

2、Combiner的输出是Reduce的输入,它绝不会改变最终的计算结果。

3、combiner的数据类型是由reduce决定的,因而输入输出是和reducer一致的。又因为combiner的输出是reducer的输入,所以reducer的输入输出的数据类型要保持一致的时候才能使用combiner,否则报错。

时间: 2024-08-23 18:21:19

combiner hadoop的相关文章

Hadoop的Combiner

在许多MapReduce应用的场景中,如果能在向reducer分发mapper结果之前做一下"本地化Reduce".一wordcount为例子,如果作业处理中的文件单词中"the"出现了574次,存储并shuffling一次("the",574)key/valuthe对比许多次("the",1)更有效.这个过程叫做合并(Combiner). hadoop 通过扩展MapReduce框架,在mapper何reducer之间增加了

Giraph添加应用程序Weakly Connected Components算法

本人原创,转载请注明出处! 本人QQ:530422429,欢迎大家指正.讨论. 目的:举例说明如何在Giraph中添加应用程序,以WCC(Weakly Connected Components)算法为例,描述怎么添加Vertex的子类,自定义输入输出格式和使用Combiner等. 背景:Giraph源码中自带有WCC算法,类为:org.apache.giraph.examples.ConnectedComponentsVertex,代码如下: package org.apache.giraph.

Hadoop Combiner组件

一:背景 在MapReduce模型中,reduce的功能大多是统计分类类型的总量.求最大值最小值等,对于这些操作可以考虑在Map输出后进行Combiner操作,这样可以减少网络传输负载,同时减轻reduce任务的负担.Combiner操作是运行在每个节点上的,只会影响本地Map的输出结果,Combiner的输入为本地map的输出结果,很多时候Combiner的逻辑和reduce的逻辑是相同的,因此两者可以共用reducer体. 二:什么时候运行Combiner (1):当job设置了Combin

Hadoop学习笔记—8.Combiner与自定义Combiner

一.Combiner的出现背景 1.1 回顾Map阶段五大步凑 在第四篇博文<初始MapReduce>中,我们认识了MapReduce的八大步凑,其中在Map阶段总共五个步凑,如下图所示: 其中,step1.5是一个可选步凑,它就是我们今天需要了解的 Map规约 阶段.现在,我们再来看看前一篇博文<计数器与自定义计数器>中的第一张关于计数器的图: 我们可以发现,其中有两个计数器:Combine output records和Combine input records,他们的计数都是

Hadoop读书笔记(十)MapReduce中的从计数器理解combiner归约

Hadoop读书笔记系列文章:http://blog.csdn.net/caicongyang/article/category/2166855 1.combiner 问:什么是combiner: 答:Combiner发生在Mapper端,对数据进行归约处理,使传到reducer端的数据变小了,传输时间变端,作业时间变短,Combiner不能夸Mapper执行,(只有reduce可以接受多个Mapper的任务). 并不是所有的算法都适合归约处理,例如求平均数 2.代码实现 WordCount.j

Hadoop中Combiner的使用

文章转载于:http://blog.csdn.net/ipolaris/article/details/8723782 Hadoop中Combiner的使用 在MapReduce中,当map生成的数据过大时,带宽就成了瓶颈,怎样精简压缩传给Reduce的数据,有不影响最终的结果呢.有一种方法就是使用Combiner,Combiner号称本地的Reduce,Reduce最终的输入,是Combiner的输出.下面以<Hadoop in action>中的专利数据为例.我们打算统计每个国家的专利数目

Hadoop初学指南(8)--MapReduce中的Combiner操作

本文主要介绍了MapReduce中的Combiner操作. 在MapReduce的执行步骤中,我们一共分了8步,其中Map中的最后一步规约操作就是今天要讲的Combiner. 首先看一下前文中的计数器: 我们可以发现,其中有两个计数器:Combine output records和Combine input records,他们的计数都是0,这是因为我们在代码中没有进行规约操作. 现在我们加入规约操作. 在前文代码(参看http://xlows.blog.51cto.com/5380484/14

辛星笔记之Hadoop权威指南第三篇combiner

集群上的可用宽带限制了MapReduce作业的数量,因此最重要的一点是尽量避免map任务和reduce任务之间的数据传输.Hadoop允许用户针对map任务的输出指定一个合并函数,有时候我们也称作combiner,它就像mapper和reducer一样. 合并函数的输出作为reduce函数的输入,由于合并函数是一个优化方案,所以Hadoop无法确定针对map任务输出中任一条记录需要调用多少次合并函数.不管我们调用多少次合并函数,reducer的输出结果都应该一致.合并函数的规则限定了可以使用的函

hadoop学习;Streaming,aggregate;combiner

hadoop streaming允许我们使用任何可执行脚本来处理按行组织的数据流,数据取自UNIX的标准输入STDIN,并输出到STDOUT 通过设定mapper为'RandomSample.py 10',我们按十分之一的采样率,没有设定特殊的reducer,一般默认使用IdentityReducer(把输入直接转向输出) 通过HDFS的命令getMerge(输出合并)或其他文件操作,可以获得正确数目的输出文件 随机采样脚本用Python实现,但是只要基于STDIN和STDOUT的脚本语言都可以