作业运行后,许多开发人员可能会问:“能够让它运行得更快一些吗?”
有一些Hadoop相关的“疑点”值得检査一下,看看它们是不是引发性能问 题的“元凶”。在开始任务级别的分析或优化之前,必须仔细研究表5-3所示的检査内容。
表5-3.作业调优检查表
范围 |
最佳实践 |
进一步信息 |
Mapper的数量 |
Mapper需要运行多长时间?如果平均只运行几秒,则可以看是否能用更少mapper运行更长时间,通常是一分钟左右,时间长度取决于使用的输入格式 |
7.2.2节 |
续表
范围 |
最佳实践 |
进一步信息 |
reducer的 数量 |
为了达到最髙性能,集群中reducer数 应该略少于reducer的任务槽数。这将 使reducer能够在同一个周期(in one wave)完成任务,并在reducer阶段充分 使用集群 |
7_1_1节 |
combiner |
作业能否充分利用combiner来减少通 过shuffle传输的数据量 |
2.4.2节 |
中间值的压缩 |
对map输出进行压缩几乎总能使作业执 行得更快 |
4.2.3节 |
自定义序列 |
如果使用自定义的Writable对象或自 定义的comparator,则必须确保芑实现RawComparator |
4.3.3节 |
调整shuffle |
MapReduce的shuffle过程可以对一些 内存管理的参数进行调整,以弥补性能 的不足 |
6.4.3节 |