【Hadoop离线基础总结】MapReduce参数优化
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参数优化的更多相关文章
- 【Hadoop离线基础总结】Sqoop常用命令及参数
目录 常用命令 常用公用参数 公用参数:数据库连接 公用参数:import 公用参数:export 公用参数:hive 常用命令&参数 从关系表导入--import 导出到关系表--expor ...
- 【Hadoop离线基础总结】Hive调优手段
Hive调优手段 最常用的调优手段 Fetch抓取 MapJoin 分区裁剪 列裁剪 控制map个数以及reduce个数 JVM重用 数据压缩 Fetch的抓取 出现原因 Hive中对某些情况的查询不 ...
- 【Hadoop离线基础总结】oozie的安装部署与使用
目录 简单介绍 概述 架构 安装部署 1.修改core-site.xml 2.上传oozie的安装包并解压 3.解压hadooplibs到与oozie平行的目录 4.创建libext目录,并拷贝依赖包 ...
- 【Hadoop离线基础总结】impala简单介绍及安装部署
目录 impala的简单介绍 概述 优点 缺点 impala和Hive的关系 impala如何和CDH一起工作 impala的架构及查询计划 impala/hive/spark 对比 impala的安 ...
- 【Hadoop离线基础总结】Hue的简单介绍和安装部署
目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...
- 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发
目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...
- 【Hadoop离线基础总结】工作流调度器azkaban
目录 Azkaban概述 工作流调度系统的作用 工作流调度系统的实现 常见工作流调度工具对比 Azkaban简单介绍 安装部署 Azkaban的编译 azkaban单服务模式安装与使用 azkaban ...
- 【Hadoop离线基础总结】MapReduce自定义InputFormat和OutputFormat案例
MapReduce自定义InputFormat和OutputFormat案例 自定义InputFormat 合并小文件 需求 无论hdfs还是mapreduce,存放小文件会占用元数据信息,白白浪费内 ...
- 【Hadoop离线基础总结】MapReduce增强(下)
MapReduce增强(下) MapTask运行机制详解以及MapTask的并行度 MapTask运行流程 第一步:读取数据组件InputFormat(默认TextInputFormat)会通过get ...
随机推荐
- Ajax 简述与基础语法
目录 Ajax 1. 原生 JS 实现 Ajax 2. 使用 Ajax 实现异步通信 a. Ajax 的基础语法 b. 用 Ajax 传递数据 i. 传递字符串数据 ii. 传递 JSON 数据 3. ...
- Java匹马行天下之JavaSE核心技术——异常处理
Java匹马行天下之JavaSE核心技术——异常处理 异常的简介 在Java中,异常就是Java在编译.运行或运行过程中出现的错误. 程序错误分为三种:编译错误.运行时错误和逻辑错误 编译错误是因为程 ...
- 【原创干货】大数据Hadoop/Spark开发环境搭建
已经自学了好几个月的大数据了,第一个月里自己通过看书.看视频.网上查资料也把hadoop(1.x.2.x).spark单机.伪分布式.集群都部署了一遍,但经历短暂的兴奋后,还是觉得不得门而入. 只有深 ...
- Python冒泡排序算法及其优化
冒泡排序 所谓冒泡,就是将元素两两之间进行比较,谁大就往后移动,直到将最大的元素排到最后面,接着再循环一趟,从头开始进行两两比较,而上一趟已经排好的那个元素就不用进行比较了.(图中排好序的元素标记为黄 ...
- XSS语义分析的阶段性总结(二)
本文首发于“合天智汇”微信公众号,作者:Kale 前言 上次分享了javascript语义分析,并且简单介绍了新型xss扫描器的一些想法,如何在不进行大量fuzz的情况下又能准确的检测出xss漏洞,这 ...
- 2019-2020-1 20199328《Linux内核原理与分析》第六周作业
使用gdb跟踪分析一个系统调用内核函数 首先我们删除本身的menu目录,并从github上克隆一个menu,并进行编译 编译过程 现在找到test.c文件,加入上个实验中做的getPid()方法 利用 ...
- Inno Setup [Run] Section 双引号嵌套
https://stackoverflow.com/questions/26257808/inno-setup-how-to-run-a-code-procedure-in-run-section-o ...
- Linux 文件常用权限
-rw------- (600) 只有所有者才有读和写的权限 -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限 -rwx------ (700) 只有所有者才有读 ...
- HTML后台管理页面布局
设计网页,让网页好看:网上找模板 搜 HTML模板 BootStrap 一.内容回顾: HTML 一大堆的标签:块级.行内 CSS position background text-align mar ...
- 【已解决】React项目中按需引入ant-design报错TypeError: injectBabelPlugin is not a function
react项目中ant-design按需加载,使用react-app-rewired的时候报错 运行npm start或者yarn start报如下错误: TypeError: injectBabel ...