【问题标题】:Presto vs Impala: architecture, performance, functionalityPresto vs Impala:架构、性能、功能
【发布时间】:2023-03-30 11:15:01
【问题描述】:

您能否强调一下 2019 年两者在架构和功能方面的主要区别?以及这些差异如何影响性能?

由于某种原因,this excellent question 被标记为基于意见。

额外问题:为什么亚马逊决定使用 Presto 作为 Athena 的引擎?还是比 Impala 好?

更新

f PrestoDB 和 Impala 相同,为什么它们的硬件要求如此不同? Presto asks 16 GB+ of RAMImpala asks for 128 GB+ of RAM

【问题讨论】:

  • 128 不适合堆...如果您在 Impala 文档中进一步阅读,它说只有 8 个用于堆
  • 可能出于同样的原因,它推荐具有 12 个或更多磁盘的节点。 Impala 要求似乎是最高性能建议,而 Presto 更像是最低可接受水平。我玩过 Presto,让它在 2 GB 内存的节点上工作。我不推荐它,即使有 8 GB 节点,在对大型数据集进行聚合查询(计数、平均值等)时,我也会耗尽内存。 Impala 在其最低建议方面可能更加保守。此外,Presto 支持直接查询 S3 文件,这可能是他们为 AWS 选择它的原因之一。

标签: database-design olap impala presto distributed-database


【解决方案1】:

虽然技术架构、性能和功能可能是一个非常详细的主题,但我能想到的一些关键亮点(基于这两个引擎在过去这么多年的历程):

  1. Presto 总是在 Facebook、Netflix、Airbnb、Pinterest 和 Lyft 等数据驱动型公司的规模(PB 规模)上进行测试,但 Impala 可能没有那种大规模的部署(当然他们会有一些,但那些故事在公众中并不为人所知)。
  2. 由于上述因素,Presto 始终拥有一个非常多样化且快速发展的社区,帮助构建了这个强大的引擎。
  3. Presto 非常接近 ANSI SQL 合规性,这有助于其被传统数据社区采用。

-Ashish Dubey (Qubole)

【讨论】:

  • 我要补充一点,Impala 不仅支持类似 Hive 的连接
【解决方案2】:

我最近才发现这个问题,但想澄清一个误解。

Apache Impala 最低内存要求并不是一个硬性最低要求 - 所有功能都可以在 4-8GB 内存下正常运行(我每天都使用这个)。我实际上猜想,至少在过去几年中,Impala 更能容忍较低的内存级别,因为它具有更成熟的内存管理和溢出到磁盘的实现。

128GB 的​​建议是基于我们的经验,即您希望为具有苛刻工作负载的大量使用的生产集群提供什么 - 人们在规划部署时犯的最严重的错误之一是试图压缩内存需求。这可能有点保守,但我们真的不想推荐资源不足并导致糟糕体验的东西。

就架构差异而言 - Cloudera 的 Impala 开发团队一直专注于构建适用于我们 1000 多个客户的产品,而不是构建供我们自己使用的软件。我了解到,在特定部署中构建可扩展到 1000 个客户的产品实际上比构建可扩展到 1000 个节点的产品更难。

这意味着,每个功能都必须构建得足够稳健,并且通常足以应付我们所有客户的要求 - 如果有任何问题,我们总是会回复。我们喜欢说我们的客户会“在愤怒中使用它”——也就是说,他们会将一切都推到极限。

我们还非常关注对企业客户至关重要的安全功能 - 身份验证、列级授权、审计等。

我不想过多地参与基准辩论,但我想说的是,使用 MPP 架构和 LLVM 等技术始终为 Impala 提供了性能优势,我认为我们在任何苹果公司中都表现出色 -苹果比较,特别是在并发工作负载上。我确实听说过从基于 Presto 的技术迁移到 Impala,从而以一定的频率显着提升性能。

Impala 在基准测试中的一个缺点是我们更多地关注 CPU 效率和水平扩展而不是垂直扩展(即,将节点上的所有 CPU 用于单个查询)。这对许多生产工作负载来说是正确的要求,但在某些基准测试中却是一个劣势。在过去的 8 到 9 个月中,我们一直在解决这个问题,并且我们还将发布一些多线程改进,从而在即将到来的 Impala 4.0 中将标准基准的查询延迟提高 2 到 4 倍。

【讨论】:

    【解决方案3】:

    Presto 和 Impala 是非常相似的技术,具有非常相似的架构。如果您使用互联网上可用的基准测试,那么您可能会获得取决于作者的所有可能性。

    现在,归结为支持某些技术的社区数量最多,而 Presto 在这方面具有一定的优势。例如Teradata、Qubole、Starbust、AWS Athena 等

    只是强调一下:Presto 在解决不同用例方面非常多样化 - 支持 Hive、S3/Blob/gs、许多 RDBMS、NoSQL DB 等来源,从多个来源获取数据的单一查询,简单的架构,调整较少需要等。

    【讨论】:

    • 如果 Presto 和 Impala 是非常相似的技术,那么为什么它们的最低 RAM 要求相差近 10 倍?请看一下我的问题的 UPD 部分
    • @VB_ 这两种技术都是内存密集型的,并且没有硬性规定为 Impala 定义 128 GB RAM,因为它完全取决于数据的大小和查询的类型。需要注意的一点 - Impala 长期以来一直支持溢出到磁盘选项(因此较低的内存也可以工作,但性能更高),Presto 最近开始使用该功能,这可能需要一些时间才能成熟。
    【解决方案4】:

    这里的大多数答案都带有营销的味道,尤其是对于 Presto。在生产中大规模使用这两种方法后,我可以轻松地说出以下几点:

    • 对于 OLAP,Presto 是一条狗。对不起,这只是事实。它不是为高性能 OLAP 查询而设计的数据仓库。它是为数据融合而设计的查询引擎。它应该用于那个。 “类似的架构”意味着几乎没有,实现的细节最重要,任何数据库工程师都会告诉你同样的事情。坦率地说,Java 的使用应该告诉您您需要知道的一切。
    • 大公司写了很多废话并发布了。真正的工程师会在某个时候停止 Staning 并开始进行基准测试。当您看到像 Presto 这样的产品在基准测试和比较方面非常简单时,您应该非常怀疑。

    【讨论】:

      猜你喜欢
      • 2022-06-27
      • 2011-03-04
      • 2019-08-22
      • 1970-01-01
      • 2017-11-26
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多