什么是Impala?
Impala是Hadoop上原生的基于MPP的SQL查询引擎。
Impala的特点:1.基于MPP。2.兼容ANSI_92 SQL标准、兼容Hive SQL。3.对Hadoop的原生支持。4.由Cloudera主导的开源项目。
Impala应用场景
Impala适用于需要及时返回结果的ad hoc查询等BI应用,有较高SLA要求的数据处理任务,高并发的SQL查询,交互式的BI分析,基于全量数据的数据探索。
Impala的高性能是如何实现的?
没有MapReduce、没有JVM;原生结合。
基于全内存的数据处理,减少了中间结果落地带来的磁盘IO开销。
优化的文件存储格式(例如列式存储Parquet)。
基于C++的执行引擎,没有Java GC带来的性能下降。
LLVM动态代码生成的使用。
Impala查询执行过程:
- 通过ODBC/JDBC/Shell提交查询请求
- Planner将请求转换成执行计划
- Coordinator将执行计划分发至拥有数据的Impala节点
- 各Impala节点将中间结果返回Coordinator
- 由Coordinator将汇总结果返回给查询请求提交方