Hadoop性能调优与调试指南
1. 减少Shuffle和排序时间
减少Shuffle和排序时间的最简单方法是积极过滤和投影数据、使用组合器并压缩Map输出。这些方法可以减少Map和Reduce任务之间流动的数据量,减轻与Shuffle和排序阶段相关的网络和CPU/磁盘负担。如果已经完成了这些操作,可以参考一些技巧来确定是否可以对作业进行调优,使Shuffled的数据尽可能少地接触磁盘。
2. Reducer优化
2.1 Reducer数量问题
Map端的并行性通常是自动设置的,取决于输入文件和使用的输入格式。但在Reduce端,可以完全控制作业的Reducer数量。如果Reducer数量太少或太多,可能无法充分利用集群的价值。
- 问题 :想确定作业运行缓慢是否是由于Reducer数量的原因。
- 解决方案 :可以使用JobHistory UI来检查作业运行的Reducer数量。
- 讨论 :通过JobHistory UI查看作业的Reducer数量和每个Reducer的输入记录数。Reducer数量太少意味着没有充分利用集群的并行性;Reducer数量太多则可能导致调度器在资源不足时不得不交错执行Reducer。在某些情况下,可能无法避免使用少量的Reducer,例如写入外部资源(如数据库)时,不想使其过载。另外,在MapReduce中,当希望作业输出具有全局顺序而不仅仅是在Reducer输出范围内有序时,使用单个Reducer是一种常见的反模式,可以使用TotalOrderPartitioner来避免这种
超级会员免费看
订阅专栏 解锁全文
58

被折叠的 条评论
为什么被折叠?



