MapReduce任务的优化

news/2024/7/10 4:49:25 标签: mapreduce, 大数据, hadoop, 任务调度, 优化

1、任务调度

任务调度是Hadoop中非常重要的一环,这个优化又涉及两个方面的内容。计算方面:Hadoop总会优先将任务分给空闲的机器,使得所有任务能公平地分享系统资源。IO方面:Hadoop会尽量将Map任务分配给InputSplit所在的机器,以减少网络IO的消耗。

2、数据预处理与InputSplit的大小

MapReduce任务擅长处理少量的大数据,而在处理大量的小数据时,mapreduce的性能就会逊色许多。因此在提交mapreduce任务前可以先对数据进行一次预处理,将数据合并以提高mapreduce的效率。

3、Map与Reduce任务的数量

首先要定义两个概念——Map/Reduce任务槽。Map/Reduce任务槽就是这个集群能够同时运行的Map/Reduce任务的最大数量。
设置mapreduce任务的map数量主要参考的是map的运行时间,设置reduce任务的数量就只需要参考任务槽的设置即可。一般来说,reduce任务的数量应该是reduce任务槽的0.95倍或1.75倍,这是基于不同的考虑来决定的。当reduce任务的数量是任务槽的0.95倍时,如果一个reduce任务失败,hadoop可以很快找到一台空闲的机器重新执行这个任务。当reduce任务是任务槽的1.75倍时,执行速度快的机器可以获得更多的reduce任务,因此可以使负载更均衡,以提高任务的处理速度。

4、Combine函数

Combine函数是用于本地合并数据的函数。在有些情况下,map函数产生的中间数据会有很多重复的,比如在一个简单的wordcount程序中,每个map任务可能会产生很多个《the,1》记录,若将这些记录一一传给reduce任务是很耗时的。所以,我们可以运行自定义的combine函数用于本地合并,这会大大减少网络IO操作的消耗。


http://www.niftyadmin.cn/n/1229084.html

相关文章

Caffe中学习率策略应如何选择

今天,在训练网络时想换一种学习策略试试,因此重新研究了一下Caffe中提供的各种学习率策略,在这里和大家聊聊我使用时的一些经验教训。 我们先来看看和学习率策略有关的参数,以下的内容来自caffe.proto中: // The lear…

结构之法算法之道CSDN博客-第一、二期全部博文集锦[CHM 文件下载]

结构之法算法之道CSDN博客- 博文集锦第一、二期CHM 文件 希望,你得到了此份文件之后,尽力做好保护本人版权的相关工作。本人将感激不尽。 版权所有,侵权必究。 声明如下: 一、本BLOG 内所有任何文章,皆本人原创&#x…

操作系统中的内存管理

内存管理(Memory Management)是操作系统设计中最重要和最复杂的内容之一。虽然计算机硬件一直在飞速发展,内存容量也在不断增长,但是仍然不可能将所有用户进程和系统所需要的全部程序和数据放入主存中,所以操作系统必须将内存空间进行合理地划…

全新整理:微软、谷歌、百度等公司经典面试100题[第1-60题]

全新整理:微软、谷歌、百度等公司经典面试100题[第1-60题] 整理:July、二零一一年三月九日。应网友承诺与要求,全新整理。转载,请注明出处。 博主说明:此100题V0.2版,本人不再保证,还会提供答案。因为之前…

关于查找数组中最小的k个元素的解答、updated

关于查找数组中最小的k个元素的全面讨论与解答 原文以上的内容已删。因为我觉得,讨论的乱七八糟,漏洞百出。忘读者见谅。这个关于寻找最小的k个元素的问题,在程序员面试题狂想曲系列中,马上会有所彻底的阐述。敬请期待。 litaoye&…

图是否是树

题目描述 给出 n 个节点,标号分别从 0 到 n - 1 并且给出一个 无向 边的列表 (给出每条边的两个顶点), 写一个函数去判断这张`无向`图是否是一棵树 注意事项 你可以假设我们不会给出重复的边在边的列表当中. 无向边 [0, 1] 和 [1, 0] 是同…

一之续、A*,Dijkstra,BFS算法性能比较及A*算法的应用

一之续、A*,Dijkstra,双向BFS算法性能比较及A*算法的应用 作者:July 二零一一年三月十日。 出处:http://blog.csdn.net/v_JULY_v -------------------------------------------------- 引言: 最短路径的各路算法A*算法、Dijkstra…

Hadoop的Shuffle过程

概述 为了让Reduce过程可以并行处理Map结果,必须对Map的输出进行一定的排序和分割,然后再交给对应的Reduce,而这个将Map输出进行进一步整理并交给Reduce的过程就成为了Shuffle。 总的来说,shuffle过程包含在Map和Reduce两端中。…