1

我试过在我的查询前加上:

set mapred.running.reduce.limit = 25;

 set hive.exec.reducers.max = 35;

最后一个将 530 个减速器减至 35 个的工作被判入狱……这让我认为它会尝试将 530 个减速器的工作量提高到 35 个。

现在给

set mapred.tasktracker.reduce.tasks.maximum = 3;

尝试查看该数字是否是每个节点的某种最大值(以前在具有 70 个潜在减速器的集群上为 7)。

更新:

 set mapred.tasktracker.reduce.tasks.maximum = 3;

没有效果,不过值得一试。

4

1 回答 1

1

不完全是问题的解决方案,但可能是一个很好的妥协。

set hive.exec.reducers.max = 45;

对于具有 400 多个减速器的厄运的超级查询,这会将最昂贵的配置单元任务限制为总共 35 个减速器。我的集群目前只有10个节点,每个节点支持7个reducer……所以实际上一次只能运行70个reducer。通过将工作限制在 70 以下,我注意到速度略有提高,最终产品没有任何明显的变化。在生产中对此进行测试以弄清楚这里到底发生了什么。在此期间,这是一个很好的折衷解决方案。

于 2011-02-09T15:40:33.460 回答