【问题标题】:Is Hive faster than Spark?Hive 比 Spark 快吗?
【发布时间】:2017-01-17 20:47:24
【问题描述】:

看了What is hive, Is it a database?后,昨天有同事提到他可以过滤一个15B的表,在“group by”后加入另一个表,结果是6B的记录,只用了10分钟!我想知道这在 Spark 中是否会更慢,因为现在使用 DataFrame,它们可能具有可比性,但我不确定,因此是这个问题。

Hive 比 Spark 快吗?还是这个问题没有意义?对不起,我的无知。

他使用最新的 Hive,似乎在使用 Tez。

【问题讨论】:

  • 将它们放在同等的硬件上并运行类似的工作负载。你会知道答案的。 :)
  • 正确的@SergioTulentsev,但这可能不是特定于数据的吗?我的意思是我想在这里问的是is Spark faster than Hadoop?..因为假设我做了这个实验,我仍然不知道为什么。我试图理解理论上会发生什么.. :)
  • Facebook 已成功将大量批处理作业从 Hive 移植到 Spark。他们花了 几个月的调试时间(和 13 个 Spark JIRA)和调整。但现在他们的工作运行得更快了。你准备好挑战了吗?? code.facebook.com/posts/1671373793181703/…
  • IBM 尝试使用 Spark 2.0 大规模运行 TPC-DS 基准测试。但最终,他们不得不调整许多配置属性,包括记录和未记录的,才能通过。你准备好挑战了吗?? slideshare.net/jcmia1/apache-spark-20-tuning-guide/2
  • @SamsonScharfrichter 有一些真的很酷的链接,谢谢!当我尝试将管道扩展到 15T 时,我感受到了第一句话的意思。谢谢!

标签: hadoop apache-spark hive apache-tez bigdata


【解决方案1】:

Spark 很方便,但在 SQL 性能方面不能很好地处理规模。

Hive 对共同分区连接有惊人的支持。当您要加入的表有数亿到数十亿行时,您将真正感谢通过以下方式提供的细粒度连接支持:

  • 类似的distribute bysort by(或cluster by
  • bucketed joins

Hive 对metadata-only queries 有广泛的支持:Spark 从 2.1 开始才看到它的曙光

当分区数超过 10K+ 时,Spark 很快就会失去动力。 Hive 不受此限制。

【讨论】:

    【解决方案2】:

    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? 的好文章(如果不确定,请在火花上使用 Hive)。

    越低越好

    【讨论】:

    • 克里希纳非常感谢你。 Stackoverflow 很欣赏链接,但有时这些链接会死掉,未来的用户也无济于事。您能用文章的gist/intuition/basic idea更新您的答案吗? :)
    • @gsamaras 感谢您的反馈。我会编辑这个答案。
    • 图表需要更新,因为我们现在拥有经过大量优化的 Spark 2.0 - 一些查询的运行速度比 Spark 1.x 快 100 倍左右,大多数查询速度比 Spark 1.x 快 10 倍 :)
    • @T.Gawęda 好点!你能找到更好的东西吗,请发布答案! :
    • @gsamaras 是的,我会写更长的答案,重点是 Spark 如何支持 Hive,但明天 - 在波兰现在有一个晚上 ;)
    【解决方案3】:

    快进到 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 Data Platform) 2.6.4 中包含 Hive-LLAP
    • HDP 3.0.1 中包含 Hive-LLAP
    • Presto 0.203e(启用基于成本的优化)
    • Presto 0.208e(启用基于成本的优化)
    • HDP 2.6.4 中包含 SparkSQL 2.2.0
    • HDP 3.0.1 中包含 SparkSQL 2.3.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。)

    【讨论】:

    • 我现在没有安装来检查它,所以我不能说更多,但其他人可能会觉得这很有用。
    猜你喜欢
    • 2018-05-05
    • 2023-03-22
    • 2020-10-25
    • 2014-12-30
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2014-01-20
    相关资源
    最近更新 更多