Hadoop 优化及调优
后知后觉 暂无评论

Hadoop 优化及参数调优,需要考虑实际项目情况和需求。

在 Hadoop 3.x 版本中,内存分配逻辑如下:

内存逻辑分区图

不同版本的 Hadoop 内存分配逻辑略有不同,以 3.3 版本为例,在默认配置中,节点的部分内存参数都会被动态分配:

参数默认值说明
yarn.nodemanager.resource.memory-mb-1分配给容器的物理内存
yarn.scheduler.minimum-allocation-mb1024RM 中每个容器请求的最小内存分配量
yarn.scheduler.maximum-allocation-mb8192RM 中每个容器请求的最大内存分配量
mapreduce.map.memory.mb-1调度器为每个 M 类任务分配的内存
mapreduce.reduce.memory.mb-1调度器为每个 R 类任务分配的内存
mapreduce.map.java.opts512/
mapreduce.reduce.java.opts512/
  1. 其中 yarn.nodemanager.resource.memory-mb 比较特殊,如果设置为 -1, 且 yarn.nodemanager.resource.detect-hardware-capabilities 项配置为 true,则会自动根据硬件配置进行分配,否则系统会给定默认值 8192
  2. mapreduce.map.memory.mbmapreduce.reduce.memory.mb 如果没配置或配置为负值,则会自动赋值为 mapreduce.map.java.opts × mapreduce.job.heap.memory-mb.ratio 的积,如果上述两个值也未赋值则会被填充为 1024
  3. mapreduce.map.java.optsmapreduce.reduce.java.opts 参数在配置中默认被注释,它们一般直接引用 Java 的启动参数 -Xmx 的值,如果未配置,则会使用 mapreduce.map.memory.mb × mapreduce.job.heap.memory-mb.ratio 的积。

附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。