为什么spark-sqlcpu利用率比hive高?
Why spark-sql cpu utilization is higher than hive?
我在 Hive 和 Spark 中执行相同的查询 SQL。我们知道 Spark 比 Hive 快,所以我得到了预期的响应时间。
但是当我们考虑 CPU 利用率时,
- Spark 进程占用 >300%
- 而 Hive 占了近 150%。
这就是Spark和Hive的本质吗?
- 还有哪些指标需要考虑?
- 如何正确评价两者?
一张大图
Spark 没有超能力。与 MapReduce 相比,它的优势在于更倾向于快速内存访问,而不是依赖于分布式存储的较慢的核外处理。所以它的核心作用是切断IO等待时间。
结论
更高的平均 CPU 利用率预计。假设您要计算 N 个数的总和。独立于实现的渐近操作数将是相同的。但是,如果数据在内存中,您可以预期更少的总时间和更高的平均 CPU 使用率,而如果数据在磁盘上,您可以预期更长的总时间和更低的平均 CPU 使用率(更高的 IO等等)。
一些备注:
Spark 和 Hive 的设计目标不同。 Spark更多的是ETL/streaming ETL工具,Hive数据库/数据仓库。这意味着引擎盖下的不同优化和性能可能会有很大差异,具体取决于工作负载。
在没有上下文的情况下比较资源使用情况没有多大意义。
总的来说,Spark 不那么保守,而且更需要资源。它既反映了设计目标,也反映了硬件的发展。 Spark年轻了几年,足以看到硬件成本的大幅下降。
我在 Hive 和 Spark 中执行相同的查询 SQL。我们知道 Spark 比 Hive 快,所以我得到了预期的响应时间。
但是当我们考虑 CPU 利用率时,
- Spark 进程占用 >300%
- 而 Hive 占了近 150%。
这就是Spark和Hive的本质吗?
- 还有哪些指标需要考虑?
- 如何正确评价两者?
一张大图
Spark 没有超能力。与 MapReduce 相比,它的优势在于更倾向于快速内存访问,而不是依赖于分布式存储的较慢的核外处理。所以它的核心作用是切断IO等待时间。
结论
更高的平均 CPU 利用率预计。假设您要计算 N 个数的总和。独立于实现的渐近操作数将是相同的。但是,如果数据在内存中,您可以预期更少的总时间和更高的平均 CPU 使用率,而如果数据在磁盘上,您可以预期更长的总时间和更低的平均 CPU 使用率(更高的 IO等等)。
一些备注:
Spark 和 Hive 的设计目标不同。 Spark更多的是ETL/streaming ETL工具,Hive数据库/数据仓库。这意味着引擎盖下的不同优化和性能可能会有很大差异,具体取决于工作负载。
在没有上下文的情况下比较资源使用情况没有多大意义。
总的来说,Spark 不那么保守,而且更需要资源。它既反映了设计目标,也反映了硬件的发展。 Spark年轻了几年,足以看到硬件成本的大幅下降。