1. Mapreduce
| 1. 计算机性能 |
| CPU、内存、磁盘、网络 |
| 2. IO操作优化 |
| (1)数据倾斜 |
| (2)Map和Reduce数设置不合理 |
| (3)Map运行时间太长,导致reduce等待时间过久 |
| (4)小文件过多 |
| (5)大量的不可分块的超大文件 |
| (6)Spill溢出次数过多 |
| (7)Merge次数过多 |
2. Mapreduce优化的方法
| 数据输入(小文件问题): |
| 1. 合并小文件 |
| 2. 使用CombinerTextInputFormat作为输入 |
| 3. 使用可压缩的格式:bzip,lzo |
| Map阶段: |
| 1. 减少溢写次数:调整io.sort.mb(shuffle的环形缓存区大小,增大触发spill的内存上限)及sort.spill.percent(增大溢写)参数值 |
| 2. 减少合并次数:调整io.sort.factor参数,(排序文件时一次合并的流数),将其调整的大些 |
| 3. 在Map之后,可以进行Combine处理 |
| Reduce阶段: |
| 1. 合理设置map和reduce的数目 |
| 2. Map运行到一定程度后,Reduce开始拉取map的结果到reduce端 |
| 3. 不使用Reduce |
| 4. 合理设置reduce端的buffer:使Buffer中的一部分数据可以直接输送到Reduce中,减少IO开销:mapreduce.reduce.input.buffer.percent, |
| 默认为0.0,当值大于0的时候,会保留指定比例的内存读Buffer中的数据直接拿给Reduce使用。 |
| IO传输: |
| 1. 数据压缩,支持LZO和Snappy压缩 |
| 2. 使用SequenceFile二进制文件,SequenceFile也支持压缩 |
| 数据倾斜问题: |
| 1. 自定义分区 |
2. 常用的调优参数:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?