Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。
已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。
相比之下,Impala的最大特点也是最大卖点就是它的快速。
优点
1. Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。
2. 省掉了MapReduce作业启动的开销。MapReduce启动task的速度很慢(默认每个心跳间隔是3秒钟),3. Impala直接通过相应的服务进程来进行作业调度,速度快了很多。
4. Impala完全抛弃了MapReduce这个不太适合做SQL查询的范式,而是像Dremel一样借鉴了MPP并行数据库的思想另起炉灶,因此可做更多的查询优化,从而省掉不必要的shuffle、sort等开销。
5. 通过使用LLVM来统一编译运行时代码,避免了为支持通用编译而带来的不必要开销。
6. 用C++实现,做了很多有针对性的硬件优化,例如使用SSE指令。
7. 使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。
功能
* Impala可以根据Apache许可证作为开源免费提供。
* Impala支持内存中数据处理,它访问/分析存储在Hadoop数据节点上的数据,而无需数据移动。
* 使用类SQL查询访问数据。
* Impala为HDFS中的数据提供了更快的访问。
* 可以将数据存储在Impala存储系统中,如Apache HBase和Amazon s3。
* Impala支持各种文件格式,如LZO,序列文件,Avro,RCFile和Parquet。
Impala的缺点
使用Impala的一些缺点如下:
Impala不提供任何对序列化和反序列化的支持。
Impala只能读取文本文件,而不能读取自定义二进制文件。
每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。