Kylin与Impala的区别
Kylin定义
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
impala定义
Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。
基于Hive,使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。
是CDH平台首选的PB级大数据实时查询分析引擎。
由此可见,kylin与impala虽然面向最多的都是Hive数据库,但是使用的方式是完全不同的。
kylin: 提前构建cube,将聚合得到的数据存储到HBase中。利用HBase的列式存储特性保证Kylin的高并发。
impala:完全依赖于Hive数据库,与Hive共用一个元数据库,完全基于内存运算。
Kylin架构:
一、外部展示层
1. REST Server: 接收标准SQL进行查询
2. Query Engine: 将标准SQL进行解析,然后与系统中的其他组件进行交互,从而返回对应结果
二、转换与存储层
3. Routing: 将解析的SQL生成的执行计划转换成cube缓存的查询
4. Metadata: 管理存储在HBase中的Kylin元数据,最重要的是cube元数据
三、cube维度层
5. Cube Build Engine: 在数据表上通过指定的维度构建cube
Impala架构:
1.Catalog:
① 分发表的元数据信息到各个impalad中
② 接收来自statestore的所有请求
2.Statestore:
① 负责收集分布在集群中各个impalad进程的资源信息、各节点健康状况,同步节点信息
② 负责query的协调调度
3.Impalad:
① 负责协调客户端提交查询的执行
② 与HDFS部署在同一节点上
③ 给其它inmalad分配任务以及收集其它的impalad执行结果,进行汇总
④ impala也会对其它impalad分配任务,主要是对本地的HDFS、HBase里的部分数据进行操作