当前位置: 首页 > news >正文

Hadoop MapReduce 调优参数

文章目录

      • MapReduce 调优参数详解
      • MapReduce 调优参数一键复制

前言:

下列参数基于 hadoop v3.1.3 版本,共三台服务器,配置都为 4 核,4G 内存。

MapReduce 调优参数详解

这个参数定义了在 Reduce 阶段同时进行的拷贝操作的数量,用于从 Map 任务获取数据,增加此值可以加速 Shuffle 阶段的执行。

<property><name>mapreduce.reduce.shuffle.parallelcopies</name><value>10</value>
</property>

默认值: 5
建议配置: 10


定义了在 Reduce 阶段输入数据缓冲区的百分比,缓冲更多的数据可以减少磁盘 IO。

<property><name>mapreduce.reduce.shuffle.input.buffer.percent</name><value>0.8</value>
</property>

默认值: 0.7
建议配置: 0.8


定义了在 Reduce 阶段执行 merge 操作的阈值,决定何时将中间数据合并到较大的文件中以减少文件数目。

<property><name>mapreduce.reduce.shuffle.merge.percent</name><value>0.75</value>
</property>

默认值: 0.66
建议配置: 0.75


设置 Map 任务的 Java 堆内存大小。

<property><name>mapreduce.map.java.opts</name><value>-Xmx2048m</value>
</property>

默认值: 未指定(取决于集群的配置)。
建议配置:-Xmx2048m,将堆内存大小设置为 2G


设置 Reduce 任务的 Java 堆内存大小。

<property><name>mapreduce.reduce.java.opts</name><value>-Xmx2048m</value>
</property>

默认值: 未指定(取决于集群的配置)。
建议配置: -Xmx2048m,将堆内存大小设置为 2G


定义了每个 Map 任务使用的虚拟 CPU 核心数量。

<property><name>mapreduce.map.cpu.vcores</name><value>2</value>
</property>

默认值: 1
建议配置: 2


定义了每个 Reduce 任务使用的虚拟 CPU 核心数量。

<property><name>mapreduce.reduce.cpu.vcores</name><value>2</value>
</property>

默认值: 1
建议配置: 2


定义了 Map 任务最大的重试次数。

<property><name>mapreduce.map.maxattempts</name><value>4</value>
</property>

默认值: 4
建议配置: 4(默认值),保持默认值即可。


定义了 Reduce 任务最大的重试次数。

<property><name>mapreduce.reduce.maxattempts</name><value>4</value>
</property>

默认值: 4
建议配置: 4(默认值)。保持默认值即可。


定义了在 Reduce 阶段开始之前要完成的 Map 任务的比例。

<property><name>mapreduce.job.reduce.slowstart.completedmaps</name><value>0.2</value>
</property>

默认值: 0.05
建议配置: 0.2。由于集群只有三台机器,提高此值有助于确保在进行 Reduce 阶段之前有足够的数据可供处理。

定义了任务的最大执行时间(以毫秒为单位)。如果任务执行超过此时间,将被认为失败。

<property><name>mapreduce.task.timeout</name><value>600000</value>
</property>

默认值: 600000(10分钟)
建议配置: 600000(默认值)。可以根据任务的复杂性和数据量适当调整。

定义了在 Map 阶段进行排序操作时的内存缓冲区大小(以MB为单位)。

<property><name>mapreduce.task.io.sort.mb</name><value>200</value>
</property>

默认值: 100
建议配置: 200。适当增加这个值可以提高排序的性能,但不要超过可用内存的一半。


定义了在进行 Map 阶段排序操作时,达到多少内存使用比例时会触发溢写(spill)操作将数据写入磁盘。

<property><name>mapreduce.map.sort.spill.percent</name><value>0.85</value>
</property>

默认值: 0.8
建议配置: 0.85


对文件进行排序时一次合并的流数,这决定了打开文件句柄的数量。

<property><name>mapreduce.task.io.sort.factor</name><value>20</value>
</property>

默认值: 10
建议配置: 20

定义了每个 Map 任务使用的内存量(以MB为单位)。

<property><name>mapreduce.map.memory.mb</name><value>2048</value>
</property>

默认值: 1024
建议配置: 2048

定义了每个 Reduce 任务使用的内存量(以MB为单位)。

<property><name>mapreduce.reduce.memory.mb</name><value>2048</value>
</property>

默认值: 1024
建议配置: 2048

MapReduce 调优参数一键复制

下列配置参数基于 hadoop v3.1.3 版本,共三台服务器,配置都为 4 核,4G 内存,上方可以看相关参数的详细解释。

	<property><name>mapreduce.reduce.shuffle.parallelcopies</name><value>10</value></property><property><name>mapreduce.reduce.shuffle.input.buffer.percent</name><value>0.8</value></property><property><name>mapreduce.reduce.shuffle.merge.percent</name><value>0.75</value></property><property><name>mapreduce.map.java.opts</name><value>-Xmx2048m</value></property><property><name>mapreduce.reduce.java.opts</name><value>-Xmx2048m</value></property><property><name>mapreduce.map.cpu.vcores</name><value>2</value></property><property><name>mapreduce.reduce.cpu.vcores</name><value>2</value></property><property><name>mapreduce.map.maxattempts</name><value>4</value></property><property><name>mapreduce.reduce.maxattempts</name><value>4</value></property><property><name>mapreduce.job.reduce.slowstart.completedmaps</name><value>0.2</value></property><property><name>mapreduce.task.timeout</name><value>600000</value></property><property><name>mapreduce.task.io.sort.mb</name><value>200</value></property><property><name>mapreduce.map.sort.spill.percent</name><value>0.85</value></property><property><name>mapreduce.task.io.sort.factor</name><value>20</value></property><property><name>mapreduce.map.memory.mb</name><value>2048</value></property><property><name>mapreduce.reduce.memory.mb</name><value>2048</value></property>
http://www.lryc.cn/news/151410.html

相关文章:

  • springboot 与 Redis整合
  • 如何高效地设计测试用例并评审
  • 基于python+Django知识图谱的医疗问答系统设计与实现
  • cuda编程常见问题
  • QTday3
  • docker镜像是如何导入的?
  • 四川大学874考研真题00-23
  • openGauss学习笔记-58 openGauss 高级特性-资源池化
  • centos升级cmake之相关问题解决
  • vcs仿真教程(查看断言)
  • 2023开学礼新疆石河子大学图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工
  • javaee spring aop 切入点表达式
  • js 获得元素的offsetLeft
  • 【Spring面试题】IOC控制反转和DI依赖注入(详解)
  • LeetCode 2511. 最多可以摧毁的敌人城堡数目
  • bazel远程缓存(Remote Cache)
  • 算法竞赛入门经典习题2-6 排列(permutation)
  • 队列的链表实现 题目(难度1/10)
  • SpringMVC常用的三种获取请求参数的方式
  • 2023开学礼新疆理工学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工
  • 数据结构----结构--线性结构--字符串
  • 数据工厂-生成接口通用用例
  • N 字形变换
  • STM32+RTThread配置以太网无法ping通,无法获取动态ip的问题
  • python编写MQTT订阅程序
  • mysql 中 cast 函数用法
  • MongoDB 的简介
  • 是否在业务中使用大语言模型?
  • 37. 交换字符(第三期模拟笔试)
  • git 查看当前分支最近一次提交的commit SHA