MapReduce参数优化


资源相关参数

  • 这些参数都需要在mapred-site.xml中配置



    mapreduce.map.memory.mb

    一个 MapTask 可使用的资源上限(单位:MB),默认为1024

    如果 MapTask 实际使用的资源量超过该值,则会被强制杀死。



    mapreduce.reduce.memory.mb

    一个 ReduceTask 可使用的资源上限(单位:MB),默认为1024

    如果 ReduceTask 实际使用的资源量超过该值,则会被强制杀死。



    mapred.child.java.opts

    配置每个 map 或者 reduce 使用的内存的大小,默认是200M



    mapreduce.map.cpu.vcores

    每个 MapTask 可使用的最多 CPU Core 数目, 默认值: 1



    mapreduce.reduce.cpu.vcores

    每个 ReduceTask 可使用的最多 CPU Core 数目, 默认值: 1

    最后两个vcores指的是virtual core/虚拟核处理器



    剩下两个参数要在yarn集群启动之前配置

    mapreduce.task.io.sort.mb

    shuffle的环形缓冲区大小,默认 100M



    mapreduce.map.sort.spill.percent

    环形缓冲区溢出的阈值,默认 80%

  • 这些参数都需要在yarn-site.xml中配置(在yarn集群启动之前进行配置)



    yarn.scheduler.minimum-allocation-mb

    给应用程序container分配的最小内存,默认 1024M



    yarn.scheduler.maximum-allocation-mb

    给应用程序container分配的最大内存,默认 8192M



    yarn.scheduler.minimum-allocation-vcores

    container最小的虚拟内核的个数,默认 1



    yarn.scheduler.maximum-allocation-vcores

    container最大的虚拟内核的个数,默认 32



    yarn.nodemanager.resource.memory-mb

    给每个nodemanager的内存资源,默认 8192M


容错相关参数

  • mapreduce.map.maxattempts

    每个Map Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4
  • mapreduce.reduce.maxattempts

    每个Reduce Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4
  • mapreduce.job.maxtaskfailures.per.tracker

    当失败的 MapTask 失败比例超过该值时,整个作业则失败,默认值为 0

    如果你的应用程序允许丢弃部分输入数据,则该该值设为一个大于0的值。

    比如5,表示如果有低于5%的MapTask失败,整个作业仍认为成功。
  • mapreduce.task.timeout

    Task超时时间,默认值为600000毫秒(经常需要设置的一个参数)

    该参数表达的意思为:如果一个task在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该task处于block状态,可能是卡住了

    为了防止因为用户程序永远block住不退出,则强制设置了一个该超时时间。如果你的程序对每条输入数据的处理时间过长(比如会访问数据库,通过网络拉取数据等),建议将该参数调大.

    该参数过小常出现的错误提示AttemptID:attempt_14267829456721_123456_m_000224_0 Timed out after 300 secsContainer killed by the ApplicationMaster.
  • 一般一个任务长时间没有完成,可能是因为数据倾斜造成的

    数据倾斜:大量的数据都涌到同一个reduceTask里面去,造成一个reduceTask里面处理得数据量太大,迟迟不能完成。比如,reduceTakss完成80%就不动了,很有可能就是发生了数据倾斜。

效率和稳定性相关参数

  • mapreduce.map.speculative

    是否为Map Task打开推测执行机制,默认为true。

    如果Map执行时间比较长,那么集群就会推测这个Map已经卡住了,会重新启动同样的Map进行并行的执行,哪个先执行完了,就采取哪个的结果来作为最终结果
  • mapreduce.reduce.speculative

    是否为Reduce Task打开推测执行机制,默认为true。

    如果reduce执行时间比较长,那么集群就会推测这个reduce已经卡住了,会重新启动同样的reduce进行并行的执行,哪个先执行完了,就采取哪个的结果来作为最终结果

推测执行并不能解决数据倾斜的问题,反而会更加浪费内存资源,所以一般关掉

【Hadoop离线基础总结】MapReduce参数优化的更多相关文章

  1. 【Hadoop离线基础总结】Sqoop常用命令及参数

    目录 常用命令 常用公用参数 公用参数:数据库连接 公用参数:import 公用参数:export 公用参数:hive 常用命令&参数 从关系表导入--import 导出到关系表--expor ...

  2. 【Hadoop离线基础总结】Hive调优手段

    Hive调优手段 最常用的调优手段 Fetch抓取 MapJoin 分区裁剪 列裁剪 控制map个数以及reduce个数 JVM重用 数据压缩 Fetch的抓取 出现原因 Hive中对某些情况的查询不 ...

  3. 【Hadoop离线基础总结】oozie的安装部署与使用

    目录 简单介绍 概述 架构 安装部署 1.修改core-site.xml 2.上传oozie的安装包并解压 3.解压hadooplibs到与oozie平行的目录 4.创建libext目录,并拷贝依赖包 ...

  4. 【Hadoop离线基础总结】impala简单介绍及安装部署

    目录 impala的简单介绍 概述 优点 缺点 impala和Hive的关系 impala如何和CDH一起工作 impala的架构及查询计划 impala/hive/spark 对比 impala的安 ...

  5. 【Hadoop离线基础总结】Hue的简单介绍和安装部署

    目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...

  6. 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发

    目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...

  7. 【Hadoop离线基础总结】工作流调度器azkaban

    目录 Azkaban概述 工作流调度系统的作用 工作流调度系统的实现 常见工作流调度工具对比 Azkaban简单介绍 安装部署 Azkaban的编译 azkaban单服务模式安装与使用 azkaban ...

  8. 【Hadoop离线基础总结】MapReduce自定义InputFormat和OutputFormat案例

    MapReduce自定义InputFormat和OutputFormat案例 自定义InputFormat 合并小文件 需求 无论hdfs还是mapreduce,存放小文件会占用元数据信息,白白浪费内 ...

  9. 【Hadoop离线基础总结】MapReduce增强(下)

    MapReduce增强(下) MapTask运行机制详解以及MapTask的并行度 MapTask运行流程 第一步:读取数据组件InputFormat(默认TextInputFormat)会通过get ...

随机推荐

  1. Jenkins 批量创建任务的三种方法

    最近,要搭建多套测试环境,需要把 Jenkins 中 dev 视图下的所有任务批量复制到 sit 等视图下. 说明 Jenkins 任务名称规则为:[测试环境标识]-[工程名称],如:dev-daod ...

  2. ASE课程总结 by 林建平

    设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的辅助用户在阅读英文文献时记忆生词,提高用户的生词量,减少用户的阅读障碍.定义非常清晰,要有查 ...

  3. Complete the Sequence HDU - 1121

    题目大意: 输入两个数n和m,n表示有n个数,这n个数是一个多项式的前n项,让输出这个序列的n+1,n+2,..n+m项. 题解:差分规律,一直差分,直到全为0或者只剩下一个数.然后再递推回去. 给出 ...

  4. JavaScript函数作用域和声明提前(3.10.1 page.57)

    <h4>3.函数作用域和声明提前</h4> <p> <!--<script type="text/javascript">-- ...

  5. AI vs PS 矢量 VS 位图

    矢量图 AI最大可以放大64000%.不会失真,依然很清晰.原理是不同的点以及点与点之间的路径构成的,不论放大的多大,点在路径在,就可以精确的计算出它的区域.AI中无法直接编辑位图. 位图 代表PS, ...

  6. SUCTF 2019 Upload labs 2 踩坑记录

    SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...

  7. Spring5:IOC注解

    使用注解须知: 1:导入约束:导入context的命名空间 2:配置注解的支持:<context:annotation-config/> <?xml version="1. ...

  8. 基于tcp协议的套接字通信:远程执行命令

    要解决粘包问题: TCP:流式协议 特点: 1.数据流没有开头也没有结果,像水流一样 2.TCP协议有一个nagle算法, nagle算法会将数据量较小,并且时间间隔较短的数据合成一条数据发送, 这么 ...

  9. Linux 日常操作

    Linux 日常操作 */--> Linux 日常操作 Table of Contents 1. 查看硬件信息 1.1. 服务器型号序列号 1.2. 主板型号 1.3. 查看BIOS信息 1.4 ...

  10. vue2.x学习笔记(二十五)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12677019.html. 过滤器 vue允许开发者自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地 ...