Impala - 概述
Impala 是什么?
Impala 是一个 MPP(大规模并行处理)SQL 查询引擎,用于处理存储在 Hadoop 集群中的大量数据。 它是一个用 C++ 和 Java 编写的开源软件。 与其他 Hadoop SQL 引擎相比,它提供了高性能和低延迟。
换句话说,Impala 是性能最高的 SQL 引擎(提供类似 RDBMS 的体验),它提供了访问存储在 Hadoop 分布式文件系统中的数据的最快方式。
为何选择 Impala?
Impala 通过利用 HDFS、HBase、Metastore、YARN 和 Sentry 等标准组件,将传统分析数据库的 SQL 支持和多用户性能与 Apache Hadoop 的可扩展性和灵活性相结合。
与 Hive 等其他 SQL 引擎相比,借助 Impala,用户可以使用 SQL 查询更快地与 HDFS 或 HBase 进行通信。
Impala 可以读取 Hadoop 使用的几乎所有文件格式,如 Parquet、Avro、RCFile。
Impala 使用与 Apache Hive 相同的元数据、SQL 语法 (Hive SQL)、ODBC 驱动程序和用户界面 (Hue Beeswax),为批量或实时查询提供熟悉且统一的平台。
与 Apache Hive 不同,Impala 不基于 MapReduce 算法。 它实现了一个基于守护进程的分布式架构,负责在同一台机器上运行的查询执行的所有方面。
因此,它减少了利用 MapReduce 的延迟,这使得 Impala 比 Apache Hive 更快。
Impala 的优点
以下列出了 Cloudera Impala 的一些值得注意的优势。
使用 impala,您可以使用传统 SQL 知识以闪电般的速度处理存储在 HDFS 中的数据。
由于数据处理是在数据所在的位置(在 Hadoop 集群上)进行的,因此在使用 Impala 时,存储在 Hadoop 上的数据不需要数据转换和数据移动。
使用 Impala,您无需了解 Java(MapReduce 作业)即可访问存储在 HDFS、HBase 和 Amazon s3 中的数据。 您可以使用 SQL 查询的基本概念来访问它们。
要在业务工具中编写查询,数据必须经历复杂的提取-转换-加载 (ETL) 周期。 但是,有了 Impala,这个过程就缩短了。 探索性数据分析和数据发现等新技术克服了加载和重组的耗时阶段,使流程更快。
Impala 率先使用 Parquet 文件格式,这是一种列式存储布局,针对数据仓库场景中典型的大规模查询进行了优化。
Impala 的功能
以下是cloudera Impala的功能 −
Impala 可在 Apache 许可下作为开源免费使用。
Impala 支持内存中数据处理,即它无需移动数据即可访问/分析存储在 Hadoop 数据节点上的数据。
您可以使用 Impala 使用类似 SQL 的查询来访问数据。
与其他 SQL 引擎相比,Impala 可以更快地访问 HDFS 中的数据。
使用 Impala,您可以将数据存储在 HDFS、Apache HBase 和 Amazon s3 等存储系统中。
您可以将 Impala 与 Tableau、Pentaho、微观策略和 Zoom 数据等商业智能工具集成。
Impala 支持各种文件格式,例如 LZO、序列文件、Avro、RCFile 和 Parquet。
Impala 使用 Apache Hive 中的元数据、ODBC 驱动程序和 SQL 语法。
关系数据库和 Impala
Impala 使用类似于 SQL 和 HiveQL 的查询语言。 下表描述了 SQL 和 Impala 查询语言之间的一些主要差异。
Impala | 关系数据库 |
---|---|
Impala 使用类似于 HiveQL 的 SQL 查询语言。 | 关系数据库使用 SQL 语言。 |
在 Impala 中,您无法更新或删除单个记录。 | 在关系数据库中,可以更新或删除单个记录。 |
Impala 不支持事务。 | 关系数据库支持事务。 |
Impala 不支持索引。 | 关系数据库支持索引。 |
Impala 存储和管理大量数据(PB)。 | 与 Impala 相比,关系数据库处理的数据量较小(TB)。 |
Hive、Hbase 和 Impala
尽管 Cloudera Impala 使用与 Hive 相同的查询语言、元存储和用户界面,但它在某些方面与 Hive 和 HBase 有所不同。 下表给出了HBase、Hive和Impala之间的对比分析。
HBase | Hive | Impala |
---|---|---|
HBase 是基于 Apache Hadoop 的宽列存储数据库。 它使用 BigTable 的概念。 | Hive 是一个数据仓库软件。 使用它,我们可以访问和管理基于 Hadoop 构建的大型分布式数据集。 | Impala 是一个用于管理、分析存储在 Hadoop 上的数据的工具。 |
HBase的数据模型是宽列存储。 | Hive 遵循关系模型。 | Impala 遵循关系模型。 |
HBase采用Java语言开发。 | Hive采用Java语言开发 | Impala 使用 C++ 开发。 |
HBase的数据模型是schema-free的。 | Hive 的数据模型是基于 Schema 的。 | Impala 的数据模型是基于 Schema 的。 |
HBase 提供 Java、RESTful 和 Thrift API。 | Hive 提供 JDBC、ODBC、Thrift API。 | Impala 提供 JDBC 和 ODBC API。 |
支持 C、C#、C++、Groovy、Java PHP、Python 和 Scala 等编程语言。 | 支持 C++、Java、PHP 和 Python 等编程语言。 | Impala 支持所有支持 JDBC/ODBC 的语言。 |
HBase提供对触发器的支持。 | Hive 不提供任何触发器支持。 | Impala 不提供任何触发器支持。 |
这三个数据库 −
是 NOSQL 数据库。
作为开源提供。
支持服务器端脚本。
遵循 ACID 属性,例如持久性和并发性。
使用分片进行分区。
Impala 的缺点
使用Impala的一些缺点如下 −
- Impala 不提供任何序列化和反序列化支持。
- Impala 只能读取文本文件,不能读取自定义二进制文件。
- 每当新记录/文件添加到 HDFS 中的数据目录时,就需要刷新表。