Hadoop实战:使用Combiner提高Map/Reduce程序效率

好不easy算法搞定了。小数据測试也得到了非常好的结果,但是扔到进群上。挂上大数据就挂了。无休止的reduce不会结束了。

。。

。。

。。。。

。。

。。。

。。

====================================================================

这才想起还有个combiner!

。!!!。!!

!。!!。!!

!!

!!

我们知道。MapReduce是分为Mapper任务和Reducer任务。Mapper任务的输出,通过网络传输到Reducer任务端,作为输入。

在Reducer任务中,通常做的事情是对数据进行归约处理。

那么当大量的Mapper结果狂奔而来的时候。Reducer非常多时候是招架不住的,尤其是每个结果size也非常大的时候。如今该Combiner发挥作用了,我们能够把Reducer要做的工作让Combiner来做,这样不仅本地完毕了数据的规约处理,同一时候也大量降低了网络传输负载。传输时间大大缩减能够提高效率。

Reducer端接受的数据就基本是结果了。。

。。。

。。。。

。。

。。。。

要注意的是,Combiner仅仅在Mapper任务所在的节点执行,不会跨Mapper任务执行。Reduce端接收全部Mapper端的输出来作为输入。尽管两边的归约类是同一个,可是执行的位置全然不一样。

并非全部的归约工作都能够使用Combiner来做。

比方求平均值就不能使用Combiner。由于对于平均数的归约算法不能多次调用。

===================================================================

时间: 2024-11-10 07:14:35

Hadoop实战:使用Combiner提高Map/Reduce程序效率的相关文章

Hadoop 使用Combiner提高Map/Reduce程序效率

众所周知,Hadoop框架使用Mapper将数据处理成一个<key,value>键值对,再网络节点间对其进行整理(shuffle),然后使用Reducer处理数据并进行最终输出. 在上述过程中,我们看到至少两个性能瓶颈: 如果我们有10亿个数据,Mapper会生成10亿个键值对在网络间进行传输,但如果我们只是对数据求最大值,那么很明显的Mapper只需要输出它所知道的最大值即可.这样做不仅可以减轻网络压力,同样也可以大幅度提高程序效率. 使用专利中的国家一项来阐述数据倾斜这个定义.这样的数据远

Hadoop简介(1):什么是Map/Reduce

看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop整体有所了解了. Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等. 这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop: 1.什么是Map/Reduce,看

如何给Map/Reduce程序传递参数?

前言 以前我们启动一个Map/Reduce,经常是利用hadoop jar ./xxx.jar yyy.KK input output的方式在SHELL脚本或者命令行直接提交作业.但是最近涉及到的一个项目,需要根据配置动态的启动MR作业,也就是涉及到向MAP,REDUCE处理类传递参数的问题. 传递参数的方式 最常见的方式: Configuration conf = new Configuration(); conf.set("key","value"); 然后在M

详述执行map reduce 程序的步骤(本地执行MR、服务器上执行MR)

MR程序的执行环境有两种:本地测试环境.服务器环境. 1.本地环境执行MR程序的步骤: (1)在windows下配置hadoop的环境变量 (2)拷贝debug工具(winutils)到HADOOP_HOME/bin (3)从源码中拷贝org.apache.hadoop.io.nativeio.NativeIO.java到我们的mr的src目录下,修改NativeIO.java.(大家可去http://download.csdn.net/detail/u013226462/9516657下载.)

用python写map reduce程序

利用hadoop streaming框架,帮助我们在map和reduce之间传递数据,通过stdin和stdout. http://wenku.baidu.com/link?url=R1vj6NWV5nv_aVI8P0G5SNzxOyaDsffGeOJrRT6iA9iYHry3w60hJ9CVAtS1iRkh7IOYEuGozIqAZubfXybzf1URxTEY7a2gY9L3LTZQ0Wq

map reduce程序示例

package test2; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper

Hadoop实战——如何获取当前Map对象所在的block id

如题,或者获取split ID in the mapfunction. ========================================= InputSplit is = context.getInputSplit(); splitId = MD5Hash.digest(is.toString()).toString(); ------------------------------------------------------------------- lastSplit =

一步一步跟我学习hadoop(5)----hadoop Map/Reduce教程(2)

Map/Reduce用户界面 本节为用户採用框架要面对的各个环节提供了具体的描写叙述,旨在与帮助用户对实现.配置和调优进行具体的设置.然而,开发时候还是要相应着API进行相关操作. 首先我们须要了解Mapper和Reducer接口,应用通常须要提供map和reduce方法以实现他们. 接着我们须要对JobConf, JobClient,Partitioner,OutputCollector,Reporter,InputFormat,OutputFormat,OutputCommitter等进行讨

Hadoop学习:Map/Reduce初探与小Demo实现

一.    概念知识介绍 Hadoop MapReduce是一个用于处理海量数据的分布式计算框架.这个框架攻克了诸如数据分布式存储.作业调度.容错.机器间通信等复杂问题,能够使没有并行 处理或者分布式计算经验的project师,也能非常轻松地写出结构简单的.应用于成百上千台机器处理大规模数据的并行分布式程序. Hadoop MapReduce基于"分而治之"的思想,将计算任务抽象成map和reduce两个计算过程,能够简单理解为"分散运算-归并结果"的过程.一个 M