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 中的数据目录时,就需要刷新表。