介绍Apache Impala
Impala直接对存储在HDFS、HBase或亚马逊简单存储服务(S3)中的Apache Hadoop数据提供快速、交互式的SQL查询。除了使用相同的统一存储平台,Impala还使用与Apache Hive相同的元数据、SQL语法(Hive SQL)、ODBC驱动程序和用户界面(Hue中的Impala查询UI)。这为实时或面向批处理的查询提供了一个熟悉而统一的平台。
Impala是对可用于查询大数据的工具的补充。Impala并不能取代Hive等基于MapReduce构建的批处理框架。Hive和其他建立在MapReduce上的框架最适合于长期运行的批处理作业,例如涉及提取、转换和加载(ETL)类型作业的批处理。
注:Impala于2017年11月15日从Apache孵化器毕业。在文档中以前提到 "Cloudera Impala "的地方,现在官方名称为 "Apache Impala"。
Impala的优势
Impala提供了:
- 数据科学家和分析师已经熟悉的SQL界面。
- 能够在Apache Hadoop中查询大量数据("大数据")。
- 在集群环境中进行分布式查询,方便扩展,并利用性价比高的商品硬件。
- 能够在不同组件之间共享数据文件,无需复制或导出/导入步骤;例如,用Pig写,用Hive转换,用Impala查询。Impala可以从Hive表中读取和写入,实现了使用Impala对Hive生产的数据进行分析的简单数据交换。
- 单一的系统进行大数据处理和分析,这样客户就可以避免为了分析而进行昂贵的建模和ETL。
Impala如何与Apache Hadoop合作
Impala解决方案由以下组件组成:
- 客户端 -- -- 包括Hue、ODBC客户端、JDBC客户端和Impala Shell在内的实体都可以与Impala交互。这些接口通常用于发布查询或完成管理任务,如连接到Impala。
- Hive Metastore - 存储有关 Impala 可用数据的信息。例如,元存储让Impala知道有哪些数据库可用,以及这些数据库的结构是什么。当您通过Impala SQL语句创建、删除和更改模式对象、将数据加载到表中等时,相关的元数据更改会由Impala 1.2中引入的专用目录服务自动广播到所有Impala节点。
- Impala--这个运行在DataNodes上的进程,负责协调和执行查询。每个Impala实例都可以接收、规划和协调来自Impala客户端的查询。查询分布在Impala节点之间,然后这些节点作为worker,执行并行的查询片段。
- HBase和HDFS--待查询数据的存储。
使用Impala执行的查询处理方式如下:
- 用户应用程序通过ODBC或JDBC向Impala发送SQL查询,ODBC或JDBC提供标准化的查询接口。用户应用程序可以连接到集群中的任何impalad。这个 impalad 成为查询的协调器。
- Impala对查询进行解析和分析,以确定整个集群中的impalad实例需要执行哪些任务。执行计划以达到最佳效率。
- HDFS和HBase等服务被本地impalad实例访问以提供数据。
- 每个impalad将数据返回给协调impalad,后者将这些结果发送给客户端。
Impala的主要特点
Impala提供了以下支持。
- Hive查询语言(HiveQL)的大部分常见SQL-92功能,包括SELECT、join和聚合函数。
- HDFS、HBase和Amazon Simple Storage System(S3)存储,包括。
- HDFS文件格式: 定界文本文件、Parquet、Avro、SequenceFile和RCFile。
- 压缩编解码器。Snappy、GZIP、Deflate、BZIP。
- 常见的数据访问接口包括
- JDBC驱动。
- ODBC驱动。
- Hue Beeswax和Impala Query UI。
- impala-shell命令行接口。
- Kerberos认证。