我在hive和sparksql中执行相同的查询。我们知道spark比hive快,所以我得到了预期的响应时间。但是当我们考虑cpu利用率时,Spark加工占>300%而Hive则占了差不多150%。这是Spark和Hive的真实本质吗?还需要考虑哪些其他指标?如何正确评价两者?
vsdwdz231#
大局Spark没有超能力。与mapreduce相比,it的优势在于它更倾向于快速的内存访问,而不是依赖于分布式存储的较慢的核外处理。所以它的核心是切断io等待时间。结论预计平均cpu利用率会更高。假设你想计算n个数的和。独立于实现的渐近操作数将是相同的。但是,如果数据在内存中,您可以期望较低的总时间和较高的平均cpu使用率,而如果数据在磁盘上,您可以期望较高的总时间和较低的平均cpu使用率(较高的io等待)。一些评论:spark和hive的设计目标并不相同。spark更多的是etl/流式etl工具,hive数据库/数据仓库。这意味着引擎盖下的优化不同,根据工作负载的不同,性能可能会有很大差异。在没有上下文的情况下比较资源使用情况没有多大意义。总的来说,spark不那么保守,更需要资源。它既反映了设计目标,也反映了硬件的发展。spark年轻几岁,硬件成本大幅下降就足够了。
1条答案
按热度按时间vsdwdz231#
大局
Spark没有超能力。与mapreduce相比,it的优势在于它更倾向于快速的内存访问,而不是依赖于分布式存储的较慢的核外处理。所以它的核心是切断io等待时间。
结论
预计平均cpu利用率会更高。假设你想计算n个数的和。独立于实现的渐近操作数将是相同的。但是,如果数据在内存中,您可以期望较低的总时间和较高的平均cpu使用率,而如果数据在磁盘上,您可以期望较高的总时间和较低的平均cpu使用率(较高的io等待)。
一些评论:
spark和hive的设计目标并不相同。spark更多的是etl/流式etl工具,hive数据库/数据仓库。这意味着引擎盖下的优化不同,根据工作负载的不同,性能可能会有很大差异。
在没有上下文的情况下比较资源使用情况没有多大意义。
总的来说,spark不那么保守,更需要资源。它既反映了设计目标,也反映了硬件的发展。spark年轻几岁,硬件成本大幅下降就足够了。