Impala 简介


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教程