为什么spark sql cpu利用率高于hive?

hyrbngr7  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(516)

我在hive和sparksql中执行相同的查询。我们知道spark比hive快,所以我得到了预期的响应时间。
但是当我们考虑cpu利用率时,
Spark加工占>300%
而Hive则占了差不多150%。
这是Spark和Hive的真实本质吗?
还需要考虑哪些其他指标?
如何正确评价两者?

vsdwdz23

vsdwdz231#

大局
Spark没有超能力。与mapreduce相比,it的优势在于它更倾向于快速的内存访问,而不是依赖于分布式存储的较慢的核外处理。所以它的核心是切断io等待时间。
结论
预计平均cpu利用率会更高。假设你想计算n个数的和。独立于实现的渐近操作数将是相同的。但是,如果数据在内存中,您可以期望较低的总时间和较高的平均cpu使用率,而如果数据在磁盘上,您可以期望较高的总时间和较低的平均cpu使用率(较高的io等待)。
一些评论:
spark和hive的设计目标并不相同。spark更多的是etl/流式etl工具,hive数据库/数据仓库。这意味着引擎盖下的优化不同,根据工作负载的不同,性能可能会有很大差异。
在没有上下文的情况下比较资源使用情况没有多大意义。
总的来说,spark不那么保守,更需要资源。它既反映了设计目标,也反映了硬件的发展。spark年轻几岁,硬件成本大幅下降就足够了。

相关问题