最近给hadoop集群升级了RHEL6,发现性能比之前的差了不少。发现淘宝内核组发现并解决了这个问题
原文链接:
于是在测试机器上面跑了一下对比,收货很大:
环境介绍:
测试机型: 48G 12X2TSAS
集群:master 1台,salve3台
测试方式:官方terasort
测试数据:100G (10亿条,每条100字节)
Map个数:736
Reduce个数:30
测试结果:
- 1. Job用时对比:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 平均用时 |
自带内核用时 | 7m30s | 8m10s | 8m7s | 8m15s | 8m6s | 8m3s | 8m16s | 8m8s |
打patch后用时 | 6m40s | 6m45s | 6m44s | 6m45s | 6m49s | 6m53s | 7m1s | 6m48s |
七次平均用时对比(去掉最大最小取平均),打patch后用时少了16%。
- 2. BenchMark数据对比
BenchMark | 自带内核 | 打patch后 | 对比 |
ReduceShufferTime | 2804003 | 1950012 | 下降30% |
ReduceSortTime | 122149 | 113363 | 下降7% |
MapNextKeyTime | 3503416 | 3629686 | 上升4% |
ReduceNextKeyTime | 56035 | 57081 | 上升2% |
ReduceUserTime | 2319175 | 1881118 | 下降19% |
MapUserTime | 6621552 | 5504168 | 下降17% |
CPU time spent (ms) | 20498470 | 16503790 | 下降19% |
Total committed heap usage (byte) | 595103383552 | 594591481856 | 持平 |
Physical memorg (bytes) | 363650875392 | 353246367744 | 持平 |
Virtual memory (bytes) | 1561136439296 | 1560911613952 | 持平 |
- 3. 系统状况
没有使用ganglia等工具,大体数据如下:
| cpu峰值 | load峰值 | 内存使用 |
自带内核用时 | 92% | 40 | 8% |
打patch后用时 | 90% | 32 | 10% |
- 4. 结论
从测试数据看,无论是直观的job用时,还是benchmark数据,打patch后性能均有明显的提升。
BenchMark的耗时在shuffle阶段提升最明显,shuffle阶段也正是IO最密集的时候,跟原文对IO的改进基本吻合。