Hive 比 Spark 快吗?
Is Hive faster than Spark?
阅读 What is hive, Is it a database? 后,一位同事昨天提到他能够过滤一个 15B table,在执行 "group by" 后将其与另一个 table 合并,这只用了10分钟就得到了6B的记录!我想知道这在 Spark 中是否会更慢,因为现在使用 DataFrames,它们可能具有可比性,但我不确定,因此是个问题。
Hive 比 Spark 快吗?或者这个问题没有意义?对不起,我的无知。
他使用的是最新的 Hive,似乎在使用 Tez。
Hive 只是一个为 MapReduce 类型的工作负载提供 sql 功能的框架。
这些工作负载可以 运行 在 mapreduce 或 yarn 上。
所以比较 tez 上的 Hive 和 spark 上的 Hive。下面讨论这个的好文章 When to go with ETL on Hive using Tez VS When to go with Spark ETL?(如果不确定,Gist 在 spark 上使用 Hive)。
越低越好
Spark 方便,但在 SQL 性能方面不能很好地处理规模。
Hive 对联合分区联接具有 惊人的 支持。当您加入的表有数亿到数十亿行时,您将真正感谢通过以下方式提供的细粒度联接支持:
- 相似
distribute by
和sort by
(或cluster by
)
bucketed joins
Hive 对 metadata-only queries
有广泛的支持:Spark 从 2.1 开始只有一线希望
当分区数可能超过 10K+ 时,Spark 很快就会失去动力。 Hive 不受此限制。
快进到 2018 年,Hive 比 SparkSQL 快得多(也更稳定),尤其是在并发环境中,根据以下文章:
https://mr3.postech.ac.kr/blog/2018/10/31/performance-evaluation-0.4/
本文使用三个集群(11 个节点、21 个节点、42 个节点)使用 TPC-DS 基准测试(1TB、3TB、10TB)比较了几个 SQL-on-Hadoop 系统:
- HDP(Hortonworks 数据平台)2.6.4 中包含的 Hive-LLAP
- Hive-LLAP 包含在 HDP 3.0.1 中
- Presto 0.203e(启用基于成本的优化)
- Presto 0.208e(启用了基于成本的优化)
- SparkSQL 2.2.0 包含在 HDP 2.6.4
- SparkSQL 2.3.1 包含在 HDP 3.0.1
- Tez 之上的 Hive 3.1.0 运行
- Hive on Tez 包含在 HDP 3.0.1 中
- Hive 3.1.0 运行 在 MR3 0.4
之上
- Hive 2.3.3 运行 在 MR3 0.4
之上
因此,与基于 Hive 的系统和 Presto 相比,SparkSQL 非常慢并且无法在并发环境中扩展。 (请注意,该实验在 vanilla Spark 上使用 SparkSQL 运行。)
阅读 What is hive, Is it a database? 后,一位同事昨天提到他能够过滤一个 15B table,在执行 "group by" 后将其与另一个 table 合并,这只用了10分钟就得到了6B的记录!我想知道这在 Spark 中是否会更慢,因为现在使用 DataFrames,它们可能具有可比性,但我不确定,因此是个问题。
Hive 比 Spark 快吗?或者这个问题没有意义?对不起,我的无知。
他使用的是最新的 Hive,似乎在使用 Tez。
Hive 只是一个为 MapReduce 类型的工作负载提供 sql 功能的框架。
这些工作负载可以 运行 在 mapreduce 或 yarn 上。
所以比较 tez 上的 Hive 和 spark 上的 Hive。下面讨论这个的好文章 When to go with ETL on Hive using Tez VS When to go with Spark ETL?(如果不确定,Gist 在 spark 上使用 Hive)。
越低越好
Spark 方便,但在 SQL 性能方面不能很好地处理规模。
Hive 对联合分区联接具有 惊人的 支持。当您加入的表有数亿到数十亿行时,您将真正感谢通过以下方式提供的细粒度联接支持:
- 相似
distribute by
和sort by
(或cluster by
) bucketed joins
Hive 对 metadata-only queries
有广泛的支持:Spark 从 2.1 开始只有一线希望
当分区数可能超过 10K+ 时,Spark 很快就会失去动力。 Hive 不受此限制。
快进到 2018 年,Hive 比 SparkSQL 快得多(也更稳定),尤其是在并发环境中,根据以下文章:
https://mr3.postech.ac.kr/blog/2018/10/31/performance-evaluation-0.4/
本文使用三个集群(11 个节点、21 个节点、42 个节点)使用 TPC-DS 基准测试(1TB、3TB、10TB)比较了几个 SQL-on-Hadoop 系统:
- HDP(Hortonworks 数据平台)2.6.4 中包含的 Hive-LLAP
- Hive-LLAP 包含在 HDP 3.0.1 中
- Presto 0.203e(启用基于成本的优化)
- Presto 0.208e(启用了基于成本的优化)
- SparkSQL 2.2.0 包含在 HDP 2.6.4
- SparkSQL 2.3.1 包含在 HDP 3.0.1
- Tez 之上的 Hive 3.1.0 运行
- Hive on Tez 包含在 HDP 3.0.1 中
- Hive 3.1.0 运行 在 MR3 0.4 之上
- Hive 2.3.3 运行 在 MR3 0.4 之上
因此,与基于 Hive 的系统和 Presto 相比,SparkSQL 非常慢并且无法在并发环境中扩展。 (请注意,该实验在 vanilla Spark 上使用 SparkSQL 运行。)