- impala概念
- cloudera提供的高效率的SQL查询工具,和hive类似,但是执行效率极高,提供实时的查询效果
- 与hive的最大不同之处在于impala不把sql编译成MapReduce程序运行,而是编译成计划树
- 但是impala底层依赖于hive,与hive是公用一套元数据存储.所以在使用impala的时候,要保证hive服务正常可用,至少保证metastore服务可用
- impala的语法和hive几乎兼容
- impala优缺点
- 优点
- 交互式实时操作,查询效率极高,具有批处理多并发等优点
- 直接操作hdfs,impalad和datanode在一个节点
- 不经过MapReduce,省掉了MapReduce作业启动的开销以及sort和shuffle的时间消耗
- 数据采用拉的方式,主动获取数据
- 不需要把中间结果写入到磁盘,节省了大销量的IO开销
- 后端使用C++实现,做了很多针对性的优化,如SSE指令
- 支持Data Locality IO调度机制,尽可能的将计算和数据分配在同一节点上,减少网络开销
- 缺点
- 完全依赖于hive的metastore
- 没有容错能力(实际上不是很大的问题,impala的查询成本很低,失败了再来一次就好了,但是聊胜于无)
- 消耗内存
- 优点
- impala是一个适用于实际交互查询的SQL软件,hive则适用于批处理查询,通常我们将两者结合使用
-
impala架构
impala state store
impalad
catalog
-
impala的查询处理流程