【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 ...
随机推荐
- Mac 窗口管理软件 Spectacle
我个人使用的窗口管理软件是 Magnet(本人在 Mac 下付费的首款软件,记得是 6 元~),今天为大家介绍一款类似的开源软件. 简介 Spectacle 是一款可以快速调整窗口大小与位置的开源软件 ...
- Problem F Free Weights
二分答案. 思路:对于二分给定的mid,即当前允许移动的最大重量,我们可以把小于改重量的标记一下,然后把没有标记的按照顺序放到另一个数组,然后判断是否满足两两相同. #include<bits/ ...
- Python 开发工具链全解
可能刚开始学习Python时,有人跟你说可以将源文件所在的文件夹添加到 PYTHONPATH环境变量中,然后可以从其他位置导入此代码.在大多数情况下,这个人常常忘记补充这是一个非常糟糕的主意.有些人在 ...
- Scrapy爬虫框架(1)--安装配置与常用命令
安装与配置 Scrapy有几个安装依赖,一般来说可以直接pip install scrapy,这个过程会自动下载安装其他几个依赖. 上述安装方法不成功,则需要手动安装依赖包 步骤 安装 lxmlpip ...
- 编程是要偷懒的--option简练写法
没改前: if(!empty($search)){ $where['personal_name'] = array('like','%'. $search . '%'); $this -> as ...
- curl请求本地域名问题
curl在本地虚拟机上请求本地接口时候,出现域名解析问题,换为ip即可,可用curl_error() 或者curl_errno来调试: vue单个文件在引入时候自己的逻辑js文件一定要放在html后引 ...
- .Net平台GC VS JVM垃圾回收
前言 不知道你平时是否关注程序内存使用情况,我是关注的比较少,正好借着优化本地一个程序的空对比了一下.Net平台垃圾回收和jvm垃圾回收,顺便用dotMemory看了程序运行后的内存快照,生成内存快照 ...
- POJ2155/LNSYOJ113 Matrix【二维树状数组+差分】【做题报告】
这道题是一个二维树状数组,思路十分神奇,其实还是挺水的 题目描述 给定一个N∗NN∗N的矩阵AA,其中矩阵中的元素只有0或者1,其中A[i,j]A[i,j]表示矩阵的第i行和第j列(1≤i,j≤N)( ...
- 从零开始搭建口袋妖怪管理系统(4)-借助webpack4.6工程化项目(上)
"手动是不可能手动的了,这辈子都不可能手动的了." 一.目标 上一章我们借助ngRoute,完成了口袋妖怪SPA系统的多模块导航开发,但是现在引用的东西越来越多,项目文件目录开始变 ...
- RHCS图形界面建立GFS共享下
我们上面通过图形界面实现了GFS,我们这里使用字符界面实现 1.1. 系统基础配置 5台节点均采用相同配置. 配置/etc/hosts文件 # vi /etc/hosts 127.0.0. ...