1 Impala是什么
Impala是一款用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎,由Cloudera公司于2012年引进并于2013年开源使用。
它是一个用C ++和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。换句话说,Impala是性能最高的SQL引擎(提供类似RDBMS的体验),它提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。
对于Hadoop程序员而言,Cloudera的Impala是在Apache HBase和HDFS上运行查询的绝佳选择,因为在Impala中,程序员无需在处理数据之前先转换或移动数据。 由于Cloudera Impala中使用了相似的数据和文件格式,因此可以轻松地将其与Hadoop生态系统集成。
注:Impala于2017年11月15日从Apache Incubator“退役”。Cloudera Impala正式名称变更Apache Impala。
2 为什么使用Impala
- Impala使用标准组件(如HDFS,HBase,Metastore,YARN和Sentry)将传统分析数据库的SQL支持和多用户性能与Apache Hadoop的可扩展性和灵活性相结合。
- 与其他SQL引擎(如Hive)相比,用户可以使用SQL查询以更快的方式与HDFS或HBase进行通信。
- Impala可以读取Hadoop使用的几乎所有文件格式,如Parquet,Avro,RCFile。
- Impala将相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax)用作Apache Hive,为面向批量或实时查询提供熟悉且统一的平台。
- 与Apache Hive不同,Impala不基于MapReduce算法。 它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。因此,它减少了使用MapReduce的延迟,这使Impala比Apache Hive快。
3 Impala的优点
- 节约I/O开销:Impala不用在磁盘中写入中间结果
- 节约MapReduce启动开销:Impala直接通过对应的服务进程进行作业调度,速度大幅提升。
- 查询优化:Impala放弃了MapReduce SQL的查询范式,省掉不必要的shuffle、sort等开销。
- 使用LLVM来统一编译运行
- 硬件优化:用C++实现,例如使用SSE指令。
- 节约网络开销:使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行。
4 Impala的功能
- 支持在内存中处理数据:Impala能访问、分析存储在Hadoop节点上的数据
- 类SQL查询语句
- 快速访问HDFS数据
- 可将数据存储在Impala存储系统
- 支持各种文件格式:LZO,序列文件,Avro,RCFile,Parquet等
5 Impala教程
本教程面向对Impala这款工具感兴趣的用户;
为了让您能充分吸收本教程的知识点,我们建议您在开始学习本教程之前先对SQL语法知识进行简单的了解:SQL教程