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

时间:2018-05-26 12:24:25

标签: apache-spark hive cpu-usage

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

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

  • Spark过程高于> 300%
  • 而Hive则接近150%。

这是Spark和Hive的真实本质吗?

  • 还需要考虑哪些其他指标?
  • 如何以正确的方式评估两者?

1 个答案:

答案 0 :(得分:2)

大图

Spark没有超级大国。它优于MapReduce,优于快速内存访问,而不是基于分布式存储的较慢的核外处理。因此,它的核心是切断IO等待时间。

结论

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

一些评论

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

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

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