为什么spark-sqlcpu利用率比hive高?

Why spark-sql cpu utilization is higher than hive?

我在 Hive 和 Spark 中执行相同的查询 SQL。我们知道 Spark 比 Hive 快,所以我得到了预期的响应时间。

但是当我们考虑 CPU 利用率时,

这就是Spark和Hive的本质吗?

一张大图

Spark 没有超能力。与 MapReduce 相比,它的优势在于更倾向于快速内存访问,而不是依赖于分布式存储的较慢的核外处理。所以它的核心作用是切断IO等待时间。

结论

更高的平均 CPU 利用率预计。假设您要计算 N 个数的总和。独立于实现的渐近操作数将是相同的。但是,如果数据在内存中,您可以预期更少的总时间和更高的平均 CPU 使用率,而如果数据在磁盘上,您可以预期更长的总时间和更低的平均 CPU 使用率(更高的 IO等等)。

一些备注:

  • Spark 和 Hive 的设计目标不同。 Spark更多的是ETL/streaming ETL工具,Hive数据库/数据仓库。这意味着引擎盖下的不同优化和性能可能会有很大差异,具体取决于工作负载。

    在没有上下文的情况下比较资源使用情况没有多大意义。

  • 总的来说,Spark 不那么保守,而且更需要资源。它既反映了设计目标,也反映了硬件的发展。 Spark年轻了几年,足以看到硬件成本的大幅下降。