大数据时代快速SQL引擎-Impala(11)

测试

我们小组的同事对Impala做了一次基于TPCDS数据集的性能测试 , 分别基于1TB和10TB的数据集 , 可以看出 , 它的查询性能较之于Hive有数量级级别的提升 , 对比Spark SQL也有几倍的提升 , Compute stat操作可以给Impala带来一定的查询优化 , 但是偶尔反而误导查询优化器以至于性能下降 , 最后我们还测试了Impala on Kudu , 发现它并没有达到意料中的性能(几倍的差别) 。 唯一的缺憾是我们并没有对多用户并发场景下进行测试 , 不过从单个查询的资源消耗来看 , C++实现的Impala对资源的消耗也是最少的 , 可以推断出在多用户下它仍然能满足快速响应的需求 , 最后是官方给出的多用户场景下的对比结果(有点故意黑Presto的感觉) 。

总结

本文主要介绍了Impala这个高性能的ad-hoc查询引擎 , 分别从使用、原理和部署等方面做了详细的分析 , 最终基于我们的测试结果也证实了它的高性能 , 区别于传统DBMS的MPP解决方案 , 例如Greenplum、Vertica、Teradata等 , Impala更好的融入大数据(Hadoop/Spark)生态圈 , 更好的实现数据之间的流通 , 而传统MPP数据库 , 更倾向于数据自制 。 当然基于HDFS的实现导致Impala无法实现单条数据的实时更新 , 而只能批量的追加或者覆盖数据 , 虽然Cloudera也提供了Impala对于Kudu的支持 , 但是从性能测试结果看 , 目前查询性能还是不理想 , 而传统MPP数据库不仅可以支持单条数据的实时更新 , 甚至能够在保证查询性能的情况下支持较复杂的事务 , 这也是SQL-on-Hadoop查询引擎所望尘莫及的 。 但是无论如何 , 这类的查询引擎毕竟支持SQL引擎而不是一个完整的数据库系统 , 它提供给用户在大数据圈中高性能的查询服务 , 这也能够满足了大部分用户的需求 。

推荐阅读