你能强调一下两者在架构上的主要区别吗;2019年的功能?这些差异是如何影响绩效的
出于某种原因,这个优秀的问题被贴上了基于观点的标签。
额外的问题:为什么亚马逊决定使用Presto作为雅典娜的引擎?它比黑斑羚好吗
UPD
f PrestoDB和Impala是相同的,为什么它们在硬件要求上如此不同?Presto要求16GB+的内存,而Impala要求128GB+的RAM。
虽然技术架构、性能和功能可能是一个非常详细的主题,但我能想到的一些关键亮点(基于这两个引擎在过去这么多年的历程):
- Presto一直以Facebook、Netflix、Airbnb、Pinterest和Lyft等类型的数据驱动公司的规模(PB规模)进行测试,但Impala可能没有这些类型的大规模部署(当然他们会有一些,但这些故事在公众中并不广为人知)
- 由于上述因素,Presto一直有一个非常多样化和快速发展的社区,帮助建立了这个强大的引擎
- Presto非常接近ANSI SQL规范,这有助于传统数据社区采用它
Ashish Dubey(Qubole)
我最近才遇到这个问题,但我想澄清一个误解。
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倍。
这里的大多数答案都有营销的味道,尤其是对Presto来说。在大规模生产中使用了这两种技术后,我可以轻松地说:
- 对于OLAP来说,Presto是一只狗。对不起,这只是事实。它不是为高性能OLAP查询而设计的数据仓库。它是一个为数据融合而设计的查询引擎。它应该用于此"类似的体系结构";意味着什么都没有,实现的细节最重要,任何DB工程师都会告诉你同样的道理。坦率地说,Java的使用应该告诉你你需要知道的一切
- 很多垃圾都是大公司写出来发布的。真正的工程师在某个时刻停止Staning并开始基准测试。当你看到像Presto这样的产品在基准测试和比较方面非常出色时,你应该非常怀疑
Presto和Impala是非常相似的技术,具有非常相似的架构。如果你使用互联网上可用的基准,那么你可能会获得所有的可能性,这取决于作者。
现在,归根结底,支持一些技术的社区数量最多,而Presto在这方面也有一些优势。例如Teradata、Qubole、Starbust、AWS Athena等
需要强调的是:Presto在解决不同用例方面非常多样化-支持Hive、S3/Blob/gs、许多RDBMS、NoSQL DB等源,从多个源获取数据的单一查询,所需调整较少的简单架构等。