gpt4 book ai didi

hadoop - Amazon EMR 未使用所有节点

转载 作者:可可西里 更新时间:2023-11-01 15:17:38 26 4
gpt4 key购买 nike

我正在使用 4 个核心节点..

我正在使用配置单元对表运行查询。

各种查询似乎都没有充分利用容量。

我的表由 8 个整数字段和大约 1000 行组成。

表单查询

从表中选择 avg(col1-col2);从表中选择计数(*);以及我尝试过的所有其他查询正在生产

缩减器数量=1,映射器数量=1

我试过使用 set mapred.reduce.tasks=4;

但它不起作用。

最奇怪的是,当我使用 mapred.job.tracker=local 时,这意味着在本地节点本身上有一个 map 和一个 reduce,任务完成速度快了一倍。

除了一个之外,所有的 reduce/map slots 都一直打开。

为什么即使增加容量也不能稍微改善执行时间?我的数据样本是否太小以至于增加容量无关紧要,本地化映射和缩减实际上可以缩短时间?

最佳答案

你得到单个映射器的原因是因为你的表太小了。我假设您的 1000 行表是一个比您的 HDFS block 大小小得多的文件。尝试百万行或更大的表,您将开始看到它使用多个映射器。 The answers to this question有更多关于如何选择映射器数量的信息。

您获得单个 reducer 的原因是两件事的结合。首先,您正在处理少量数据(对于 Hive),因此您最终得到一个 reducer。其次,一些查询(比如 COUNT(*) FROM some_table)必须有一个 reducer ( see the question here )

您明确说明了为什么在本地运行作业速度更快。 1000 行表非常适合测试您的查询逻辑,但不适用于确定诸如运行时之类的事情。在集群上运行 Hive 而不是在本地运行 Hive 可能只会在您拥有 GB 数量级的数据后才开始变得更好。在您遇到至少涉及 10 GB 的查询之前,Hive 绝对不是“适合这项工作的工具”,尽管 100 GB 或 TB(或更多)更容易证明其合理性。

关于hadoop - Amazon EMR 未使用所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com