我有一个由15个节点(1个主节点和14个从节点)组成的hadoop集群,hdfs的复制因子为3。我已使用以下命令运行terasort in yarn for 10gb:
yarn jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar terasort /terasort-input /terasort-output
在我完成了14个功能节点之后,我开始一次解算一个节点,然后再次运行terasort来查看执行时间的变化。我注意到,当我缩小时,执行时间实际上并没有太大的变化,因此即使在7个从属节点上,我也有类似的执行时间。
jobhistory调用以下值:
14从机:经过:32分钟,12秒;平均Map时间:4min,4sec;平均洗牌时间:14分钟56秒;平均合并时间:3分钟50秒;平均还原时间:11分35秒;
11从机:运行时间:30分钟,6秒;平均Map时间*:5min,2sec;平均洗牌时间:6分钟9秒;平均合并时间:8分钟52秒;平均还原时间:11分39秒;
8从机:运行时间:32分钟,15秒;平均Map时间:4分钟29秒;平均洗牌时间:13分钟48秒;平均合并时间:4min,20sec;平均还原时间:11分11秒;
7从机:运行时间:30分钟,6秒;平均Map时间:4分钟28秒;平均洗牌时间:7分钟26秒;平均合并时间:8分钟26秒;平均还原时间:11分钟24秒;
问题:
为什么不同数量的工作节点的执行时间几乎相同?
如何充分利用hadoop集群,使14个工作节点的作业比7个节点的作业运行得更快?
2条答案
按热度按时间iecba09b1#
0)如果未指定#个Map器和还原器,则默认情况下有2个Map器和1个还原器。使用-d mapred.map.tasks-d mapred.reduce.tasks
1) 数据集太小,因此发生奇怪行为的结果非常低
2) 检查io。如果每个节点有一个旋转磁盘,这不是一个好主意。
iezvtpos2#
1.请用较大的数据量再次运行terasort。
2.将砌块尺寸改大,如256m。你设定了多少任务?如果太小,就把它调大。