Hadoop MapReduce 性能优化
作者: 康凯森
日期: 2016-04-03
分类:
BigData
影响 MapReduce 的主要因素
- 硬件因素 :CPU 磁盘 I/O, 网络带宽, 内存
- 底层存储系统
- 输入数据,shuffle 数据 以及输出数据的大小
- 作业算法: map, reduce, partition, combine, compress
潜在影响因素
- I/O 模式: 直接I/O(本地) 流式I/O(TCP,JDBC)
- 输入数据解析
- 输入数据存储
性能调优
mapred-site.xml
- CPU相关参数
map reduce 任务的最大数目
- 磁盘I/O相关参数
是否压缩 编码方式
内存相关参数
- 每个JVM 任务的可用内存
- 每个MR 作业的VM极限值
- MR 合并与排序 时 排序区的缓冲区大小
- MR 合并与排序 时 map 输出分区数目
与网络相关参数
机架感知
hdfs-site.xml
检测 系统瓶颈
- 创建一项基线 :使用 Hadoop 集群默认配置
- 分析 Hadoop 计数器, 修改或者调优 某些配置参数的配置
- 重复第2步,直到作业执行时间 达到最短
善于使用linux 相关命令
通过计数器 识别 资源薄弱环节
- 检查输入数据大小
- 检查 海量I/O 和网路阻塞
- 检查 并发任务不足
- 检查 CPU 过饱和
强化 map 和 reduce 任务
在Hadoop 下处理 hdfs 小文件问题的最简单方法是把它们打包成大文件
在shuffle阶段 和 Sort 阶段 提高性能最简单的手段就是压缩排序和合并的数据量,可以 使用 combiner,数据压缩,数据过滤
优化 mapreduce 任务
- 合理设定Map/Reduce数量
- 使用Combiner减少中间数据输出
- 对中间数据和最终结果启用压缩
- 减少Shuffle过程中写入磁盘的数据
- 使用正确的 Writable 类型
- 在代码中捕获所有异常
Hadoop 最佳实践
- EXT4 文件系统
- noatime: 禁用文件和目录的访问时间日志
- 避免使用逻辑卷管理
- swap 值降低 或禁用
- 提高最大打开文件描述符
《OLAP 性能优化指南》欢迎 Star&共建
《OLAP 性能优化指南》
欢迎关注微信公众号