Impala
Impala概述:
- Impala是个实时的sql查询工具,类似于Hive的操作方式,但是执行效率极高,号称当下大数据生态圈中执行效率最高的sql类软件
- Impala工作底层执行依赖于hive,与hive共用一套元数据存储,在使用Impala的时候,必须保证hive服务是正常可靠的,至少metastore开启。
- Impala最大的跟hive不同点在于不再把sql编译成mr程序执行,而是编译成执行计划树
- Impala的sql语法几乎兼容hive的sql语句
Impala优点:
- Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。
- 省掉了MapReduce作业启动的开销。MapReduce启动task的速度很慢(默认每个心跳间隔是3秒钟),Impala直接通过相应的服务进程来进行作业调度,速度快了很多。
- Impala完全抛弃了MapReduce这个不太适合做SQL查询的范式,而是像Dremel一样借鉴了MPP并行数据库的思想另起炉灶,因此可做更多的查询优化,从而省掉不必要的shuffle、sort等开销。
- 通过使用LLVM来统一编译运行时代码,避免了为支持通用编译而带来的不必要开销。
用C++实现,做了很多有针对性的硬件优化,例如使用SSE指令。 - 使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。
总结:
Impala是一个适用于实时交互查询的sql软件,hive适合于批处理查询的sql软件。通常两个交互配合。