文档章节

mapreduce.job.reduce.slowstart.completedmaps

Yulong_
 Yulong_
发布于 2016/09/19 15:24
字数 527
阅读 242
收藏 0

集群描述

YARN情况如下:

  • NodeManager个数为20
  • 每个Nodemanager分配内存为104G左右。
  • 每个container内存设置为4G,可生成约520个container。
  • 资源调度方式为fair scheduler。

加工数据

加工数据为1T的gzip压缩数据,解压约为3至4T数据,个数为1000个。

负载任务

任务执行情况如下:

  • 每个任务:map1000+,reduce1000+
  • 如果集群只运行单个任务,则单个计算时间可控制在10分钟左右。
  • 最多同时运行10至20个任务,每个任务可分配到使用的contianer个数为30-50个。

问题描述

问题现象

  • 大部分任务的Map剩余部分Pending
  • 任务的Reduce已经启动显示为Running
  • 集群CPU负载几乎为0

输入图片说明 输入图片说明

示例

如20个任务,每个任务剩余10-100个的Map在Pending状态,每个任务的Reduce获取了约25个container显示为Running状态。因此,整个集群的任务都在等待其他任务释放container,然而各自任务的Reduce占用了container却不释放,全部任务都处于等待状态。

解决思路

参数调整

将产生Map较多的任务参数mapreduce.job.reduce.slowstart.completedmaps设置为1.0。避免Map和Reduce过多的任务出现Map未执行完,Reduce任务先开始执行,过多任务并行时所需资源相互等待的窘境。这是客户端参数

不利影响

  • 当集群负载比较空闲时,少数任务中Map接近执行完毕,而Reduce任务不启动导致的container闲置,集群资源浪费。若Map任务处理数据出现不平均的情况,这种情况会更加严重。
  • 从集群资源负载监控会出现Map和Reduce任务出现两个波峰,中间出现波谷(Cpu空闲)。

© 著作权归作者所有

上一篇: Apache Slider + Storm
下一篇: Apache Slider + Hbase
Yulong_
粉丝 10
博文 131
码字总数 235862
作品 0
朝阳
部门经理
私信 提问
【十八掌●武功篇】第十掌:参数mapreduce.job.reduce.slowstart.completedmaps

之前我所见到的hive语句在执行mapreduce job的时候,打印的日志都是当map执行到100%的时候,再执行reduce。今天在执行hive sql的时候发现map还没有执行完成,reduce任务就开始。如下图所示:...

chybin500
2018/05/23
0
0
Hadoop Streaming自带参数解析

排序、hash分组、压缩格式、内存设定 -Option: -input:输入文件路径 -output:输出文件路径 -mapper:用户自己写的mapper程序,可以是可执行文件或者脚本 -reducer:用户自己写的reducer程...

analanxingde
2018/07/26
0
0
Hadoop主要配置文件深入理解

1 Hadoop源码加载配置文件原理 在Hadoop源码中,通过搜索classpath路径,来直接找到和读取配置的xml文件,使得你的配置在启动时生效。 通过命令 1 可以查看当前Hadoop可以识别出来的classpa...

with__sunshine
2018/04/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

没有更多内容

将博客搬至CSDN

https://blog.csdn.net/qq_38157006

Marhal
5分钟前
0
0
unicode Java中求字符串长度length()和codePointCount()的区别

在计算字符串长度时,Java的两种方法length()和codePointCount()一度让我困惑,运行书上例子得到的长度值是相等的,那为什么要设定两个方法呢? 对于普通字符串,这两种方法得到的值是一样的...

泉天下
6分钟前
0
0
uin-app 一、学习理由

选择uni-app 理由 别人的理由 1. 5+ 有HTML5+和Native.js技术,HTML5+包含常用的跨平台的几百个API,能满足常规开发需求,而Native.js把40w原生api映 射成js对象,这样js可以直接调原生。HTM...

轻轻的往前走
8分钟前
0
0
方括号及其在命令行中的不同用法介绍

通配 方括号最简单的用法就是通配。你可能在知道“ Globbing”这个概念之前就已经通过通配来匹配内容了,列出具有相同特征的多个文件就是一个很常见的场景,例如列出所有 JPEG 文件: ls *.j...

Linux就该这么学
13分钟前
0
0
vecty 基础

gopherjs 是把 go 编译为 js 的工具。 vecty 是基于 gopherjs 的一种类似 React 的开发框架。 安装 gopherjs 和 vecty go get -u github.com/gopherjs/gopherjsgo get -u github.com/gopher......

electricface
14分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部