Hadoop 优化及参数调优,需要考虑实际项目情况和需求。
在 Hadoop 3.x 版本中,内存分配逻辑如下:
不同版本的 Hadoop 内存分配逻辑略有不同,以 3.3 版本为例,在默认配置中,节点的部分内存参数都会被动态分配:
参数 | 默认值 | 说明 |
---|---|---|
yarn.nodemanager.resource.memory-mb | -1 | 分配给容器的物理内存 |
yarn.scheduler.minimum-allocation-mb | 1024 | RM 中每个容器请求的最小内存分配量 |
yarn.scheduler.maximum-allocation-mb | 8192 | RM 中每个容器请求的最大内存分配量 |
mapreduce.map.memory.mb | -1 | 调度器为每个 M 类任务分配的内存 |
mapreduce.reduce.memory.mb | -1 | 调度器为每个 R 类任务分配的内存 |
mapreduce.map.java.opts | 512 | / |
mapreduce.reduce.java.opts | 512 | / |
- 其中
yarn.nodemanager.resource.memory-mb
比较特殊,如果设置为-1
, 且yarn.nodemanager.resource.detect-hardware-capabilities
项配置为true
,则会自动根据硬件配置进行分配,否则系统会给定默认值8192
。mapreduce.map.memory.mb
和mapreduce.reduce.memory.mb
如果没配置或配置为负值,则会自动赋值为mapreduce.map.java.opts × mapreduce.job.heap.memory-mb.ratio
的积,如果上述两个值也未赋值则会被填充为1024
。mapreduce.map.java.opts
和mapreduce.reduce.java.opts
参数在配置中默认被注释,它们一般直接引用 Java 的启动参数-Xmx
的值,如果未配置,则会使用mapreduce.map.memory.mb × mapreduce.job.heap.memory-mb.ratio
的积。
附录
参考链接
- Yarn - Hadoop Docs
- Mapreduce - Hadoop Docs
- Mapreduce memory setting - Cloudera Community
- Hadoop生产调优 - CNBLOG
- HDP Documents - Cloudera Docs
- 配置Hive服务 - CSDN
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2024-11-24 17:01 PM