目录
一、概述
1.1简介
Impala是由Cloudera公司开发的新型查询系统,能够对存储在HDFS、HBase以及S3上的数据进行快速的交互式SQL查询。另外,impala与Hive使用了统一的存储系统、同样的元数据库、SQL语法(Hive SQL)、ODBC驱动和用户交互接口(Hue),Impala对实时的或者面向批处理的查询提供了一个统一的平台,Impala在性能上比Hive高出3~30倍。
Impala是用于查询大数据的工具的补充,Impala不是取代构建在MapReduce之上的批处理框架,比如Hive。Hive和其他的基于MapReduce的框架适合处理长时间运行的批处理作业,比如涉及到批处理的ETL类型的作业。
注意:Impala于2017年11月15日从Apache的孵化器毕业。
1.2优势
(1)使用的是数据科学家和分析师熟悉的SQL接口
(2)能查询大数据集
(3)是集群环境中的分布式查询,便于扩展和使用廉价商用硬件
(4)能够在不同的分析引擎之前共享数据,比如可以通过pig写数据,使用Hive转换数据,再使用impala查询数据。impala能够读写hive中的表,使用impala对Hive生成的数据进行分析,实现简单的数据交换。
(5)单一系统用于大数据处理和分析,因此可以避免成本高昂的建模和ETL.
1.3主要特点
(1)支持Hive查询语言(HiveQL)最常见的SQL-92功能,包括 SELECT, JOIN和聚合函数
(2)支持HDFS, HBase和S3存储, 包括:
• HDFS 文件格式: delimited text files, Parquet, Avro, SequenceFile,和 RCFile.
• 压缩: Snappy, GZIP, Deflate, BZIP.
(3)常见的数据访问接口,包括JDBC driver、ODBC driver
(4)支持impala-shell命令行接口
(5)Kerberos授权
二、Impala架构
为了避免延迟,impala绕过MapReduce,采用了与商用并行关系数据库类似的分布式查询引擎,可以直接与HDFS和HBase进行交互查询,性能上比Hive要快。
Impala server 是一个分布式的大规模并行处理(MPP)的数据库引擎, 它由运行在集群中特定主机上的不同守护进程组成。其架构图如下图所示:
2.1Impala Daemon
这个进程是运行在集群每个DataNode节点上的守护进程,是impala的核心组件。在每个节点上这个进程的名字称为impalad。主要负责读写数据,接受 impal