SQL Compare
对比表 2020/8/19
| SQL引擎\指标 | SQL语句 | 适用范围 | 最近版本 (Release) |
数据源 | 数据规模 | 备注 |
|---|---|---|---|---|---|---|
| Hive | HiveQL | OLAP | HDFS | |||
| Spark SQL | OLAP | |||||
| Presto | ANSI SQL | OLAP | Hive/Kafka/RDBMS | |||
| Impala | OLAP | HDFS/HBase/Kudu | ||||
| HAWQ | ANSI SQL | OLAP,事务ACID | 2018/9 | HDFS | ||
| Greenplum | 基于PostgreSQL | OLAP | 2020/8 | 自定义 | ||
| Doris | MySQL | OLAP | 自定义 | |||
| ClickHouse | OLAP | 自定义 | ||||
| Kylin | OLAP | 数据预聚合 | ||||
| Phoenix | 2019/12 | |||||
| Cassandra | OLAP | |||||
| Ignite | HTAP | 2020/5 | 分布式内存计算平台 | |||
| Mongodb | ||||||
| TiDB | MySQL | HTAP | 自定义 | |||
| Calcite | OLAP | |||||
| Drill | OLAP | |||||
| Druid | OLAP | 自定义 | ||||
| Gobblin |
采用 TPC-DS
- 生成数据,dsdgen生成,hive-testbench采用mapreduce分布式生成到hdfs中;
- 适配 TPC-DS 的SQL,dsqgen可以生成建表和查询的SQL,但是要根据数据库进行适配;
- hive-testbench包含Hive和SparkSQK的99条SQL;
- impala的99条SQL -- https://github.com/fayson/cdhproject/tree/master/impala-tpcds
MPP
对于MPP架构来说,因为task和Executor是绑定的,如果某个Executor执行过慢或故障,将会导致整个集群的性能就会受限于这个故障节点的执行速度(所谓木桶的短板效应),所以MPP架构的最大缺陷就是——短板效应。另一点,集群中的节点越多,则某个节点出现问题的概率越大,而一旦有节点出现问题,对于MPP架构来说,将导致整个集群性能受限,所以一般实际生产中MPP架构的集群节点不易过多。
举个例子来说下两种架构的数据落盘:要实现两个大表的join操作,对于批处理而言,如Spark将会写磁盘三次(第一次写入:表1根据join key进行shuffle;第二次写入:表2根据join key进行shuffle;第三次写入:Hash表写入磁盘), 而MPP只需要一次写入(Hash表写入)。这是因为MPP将mapper和reducer同时运行,而MapReduce将它们分成有依赖关系的tasks(DAG),task间是顺序执行的,因此必须通过写入中间数据共享内存来解决数据的依赖。