MapReduce的并行执行效率
来源:互联网 发布:unity3d 材质球shader 编辑:程序博客网 时间:2024/05/21 19:45
参考:http://blog.csdn.net/facingthesuncn/article/details/8915441
从搭好Hadoop集群之后,再上面跑了一些程序,由于数据量较小,得到实验结果的时间也还可以忍受,因此也就没有关注MapReduce并行执行效率这方面的问题。后来跑了几个大的数据集,都发现非常的慢,于是就不得不关系效率方面的问题了。
查看任务管理器的时候发现有很多处理器是没有利用的,只有一两个的利用率较高,与我们对MapReduce的直觉相差很大,于是问了一个一直在研究Hadoop的同学,发现我们的配置文件是有问题的。MapReduce是通过slot来配置map/reduce capacity的(下图中矩形框框出的,Occupied Map/Reduce Slots显示的是在运行时实际占用了Capacity中的多少)。Hadoop默认情况下,map/reduce capacity都为2,因此,CPU的利用率不高,整个集群的并行执行效率也不高。
因此,需要在$HADOOP_HOME/conf/mapred-site.xml文件中进行配置,具体配置如下:
- <property>
- <name>mapred.tasktracker.map.tasks.maximum</name>
- <value>12</value>
- <description>The maximum number of map tasks that will be run
- simultaneously by a task tracker.
- </description>
- </property>
- <property>
- <name>mapred.tasktracker.reduce.tasks.maximum</name>
- <value>6</value>
- <description>The maximum number of reduce tasks that will be run
- simultaneously by a task tracker.
- </description>
- </property>
具体该将capacity设置为多少合适呢?这里可能要参考集群机器具体的硬件配置了。一般的,可以将Map Task Capacity设置为CPU的核心数,现在CPU每个核一般都会有多个线程(在任务管理器里会体现为多个核),设置中所参考的核心数是不包括这些线程虚拟出来的多核的。Reduce Task Capacity一般设置为Map Task Capacity的1/2或者1/4。
在我们的设置中,Map Task Capacity = CPU核心数,其实,Map Task Capacity + Reduce Task Capacity = CPU核心数 - 2比较好。因为我们的集群环境网速比较快,用户比较少,就没有给多个用户的并行放余量。设置时,需要考虑清楚这些情况
0 0
- MapReduce的并行执行效率
- MapReduce的并行执行效率
- Java8 串行流和并行流的执行效率比较
- SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率
- 并行wordcount的MapReduce实现
- ORACLE 的并行执行
- RAC的并行执行
- C# 并行编程 之 PLINQ 执行MapReduce算法
- MapReduce的执行机制
- MapReduce的执行机制
- MapReduce -- task 的执行
- oracle 并行parallel操作,会大大提高sql执行效率
- SQL的执行效率
- 代码执行的效率
- 执行效率的问题
- MapReduce与并行关系数据库的比较
- 基于MapReduce的并行算法设计
- 基于MapReduce的并行k-means聚类
- redis.conf中文版
- 关于LIst
- java 中hashcode 与 equals的关系
- route命令原理
- 谈谈如何利用店铺的百度搜索排名获得更多流量
- MapReduce的并行执行效率
- CF414B Mashmokh and ACM 【序列DP】
- 安卓之实现apk的安装
- Hadoop 常用命令
- Head First Python——初识Python+列表
- CSS布局奇淫技巧之-高度自适应
- 配置版MYSQl使用
- pat 1055 how to improve the performance
- 线索二叉树