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. Unity ML-agents 一、初次尝试

    前言 曾在高二寒假的时候,跟表哥在外面玩,当时他问我有没有想过以后要做什么,我愣了一下,回答不上来.是的,从没想过以后要做什么,只是一直在完成学校.老师安排的任务,于是那之后半年,我一直在思考,大学要 ...

  2. Prometheus监控 Redis & Redis Cluster 说明

    说明 在前面的Prometheus + Grafana 部署说明之「安装」文章里,大致介绍说明了Prometheus和Grafana的一些安装使用,现在开始如何始部署Prometheus+Grafan ...

  3. Jwt认识与攻击

    今天看到2018强网杯的题目,因此总结一下. Json Web Token Json Web Token简称jwt 那么怎么样可以让HTTP记住曾经发生的事情呢? 这里的选择可以很多:cookie,s ...

  4. AppBoxFuture: Web在线报表设计与PDF生成

      企业应用需要打印各类单证及报表,为了方便开发此类应用作者在框架内集成了报表引擎,并且实现了基于Canvas的Web在线报表设计及基于PDFJS的报表查看与打印. 一.原理浅析 报表模型:由Xml描 ...

  5. SpringMVC视图解析中的 forward: 与 redirect: 前缀

    在 SpringMVC 中,可以指定画面的跳转方式.使用 forward: 前缀实现请求转发跳转,使用 redirect: 前缀实现重定向跳转.有前缀的转发和重定向操作和配置的视图解析器没有关系,视图 ...

  6. 解决IE升级后必须以管理员运行的问题

    很多网友可能都遇到过这样的问题,在ie升级后,无法打开,必须以管理员身份运行.今天我也遇到了这个问题.最终找到了解决办法. 1.Win + R 2.输入 regedit,定位到 HKEY_CURREN ...

  7. Linux-LAMP虚拟主机配置

    1.配置用户认证 <Directory /data/discuz/passwd> AllowOverride AuthConfig AuthName "自定义的" Au ...

  8. python os模块判断文件是否存在

    import os os.path.exists(test_file.txt)

  9. 来自BAT大厂前端工程师的自白-怎么才能学好前端

    如果说理解学好web前端是先能找到一份工作,那么你应该这样做: 1.制定好一下系统的web前端学习规划,每天定量,学完什么知识点就掌握,能自己应用,而不是能看懂,写不出来东西. 2.不要自己一个人闷头 ...

  10. ELK6.3版本安装部署

    一.Elasticsearch 安装 1.部署系统以及环境准备 cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) uname - ...