1

我正在我的部分数据集上测试最新的 Hive。我通过自定义 SerDe 读取的只有几 GB 的日志文件。

当我运行简单的 Group By 查询(4 个 MR 作业)时,我得到了诸如

  • 地图:100%
  • 减少:0%
  • 地图:85%
  • 减少:0%
  • 地图:86%
  • 减少:0%

一直只在 8 核服务器上使用一个核心。有点浪费...

我已经激活了并行选项,但它仍然不会并行化。我已将减少作业的数量设置为 8。

我的期望是,由于我的数据集是分区的(=> 不同的文件),至少一些 map-reduce 阶段可以在这些文件上并行运行。

我的理解错了吗?有没有特定的方法来编写查询?

谢谢

4

1 回答 1

2

如果你只做一个简单的 GROUP BY,唯一真正的处理就是比较,这并不难。也就是说,您正在运行多少个映射器?tasktrackers 不会并行运行。相反,hadoop 存储在运行以并行化的多个任务跟踪器上。因此,如果您只为每个节点运行一个地图任务,您将看不到任何东西。

另一种可能性是,因为您在执行 GROUP BY,所以您绑定的是 IO 而不是处理器,因此无需将多个内核带入其中。

于 2011-03-29T13:42:12.663 回答