gpt4 book ai didi

java - 每个查询的hadoop作业数

转载 作者:行者123 更新时间:2023-12-02 21:46:19 24 4
gpt4 key购买 nike

我是 hive 的新手,并且已经有一段时间了。我不知道hive优化器的工作原理,但是基本上我想知道hive将运行的hadoop作业的最大数量,只是为了查看瓶颈所在,我在具有多个查询嵌套级别的单个表上尝试了查询,从未发现有超过2个hadoop作业提交给我查询结果的情况。有人可以给我一个示例查询,其中 hive 在该查询上提交了2个hadoop作业。

我有一个带有2个嵌套级别的查询,并且以1 map / 1 reduce来运行它,花费的时间约为84s。我将映射器更改为10,将reducer更改为10,执行时间增加为89s。

Runtime usage:
Job 0: Map: 1 Reduce: 10
Job 1: Map: 5 Reduce: 1

Time taken: 89.306 seconds,

我怀疑一定是由于JVM调用时间所致。有人可以告诉我为什么会这样吗? JVM是否也可以在相同的hadoop作业中重用?如果是,则可以在多个hadoop作业之间共享JVM(基本上有一个预先分配的JVM池,可与map / reduce一起使用,而不是按需生成JVM?)。

hadoop是否提供这种功能?

最佳答案

我不知道单个配置单元查询将运行的作业数量有任何限制。我认为我看过5场左右,但我认为2场以上很少见。作为它们自己的shuffle-sort-reduce阶段的一部分,必须执行许多操作(join,“distinct”,“group by”),因此嵌套许多操作会导致很多工作。将这些与诸如过滤器和UDF之类的东西进行对比,它们可以很容易地添加到 map 上,也可以简化将要发生的阶段。例如:

select a.z, max(b.s) from
(
select distinct x, y, z from t1
) a join
(
select x, sum(y) as s from t2 group by x
) b
on a.x = b.x
group by a.z

我希望这能带来四个左右的MR工作。

对于第二个问题,配置单元查询运行所需的时间长短涉及很多事情,因此我无法确定是什么原因导致了这种性能问题。即使您未更改任何设置,84s至89s也绝对在正常波动范围内。这么少的工作,无论如何大部分都是开销。

JVM启动可能是一个因素,尤其是取决于您有多少个任务插槽。据我所知,JVM不能在不同的mapreduce作业之间共享,而只能在单个作业内的不同任务之间共享。

关于java - 每个查询的hadoop作业数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25010288/

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