Impala - 概述



什么是 Impala?

Impala 是一个用于处理存储在 Hadoop 集群中的海量数据的 MPP(大规模并行处理)SQL 查询引擎。它是一个用 C++ 和 Java 编写的开源软件。与其他 Hadoop SQL 引擎相比,它提供了更高的性能和更低的延迟。

换句话说,Impala 是性能最高的 SQL 引擎(提供类似 RDBMS 的体验),它提供访问存储在 Hadoop 分布式文件系统中的数据的最快方法。

为什么选择 Impala?

Impala 通过利用 HDFS、HBase、元数据存储、YARN 和 Sentry 等标准组件,将传统分析数据库的 SQL 支持和多用户性能与 Apache Hadoop 的可扩展性和灵活性相结合。

  • 使用 Impala,用户可以使用 SQL 查询以比其他 SQL 引擎(如 Hive)更快的速度与 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,您可以访问存储在 HDFS、HBase 和 Amazon S3 中的数据,而无需了解 Java(MapReduce 作业)。您可以使用基本的 SQL 查询知识访问它们。

  • 为了在业务工具中编写查询,数据必须经过复杂的提取-转换-加载 (ETL) 循环。但是,使用 Impala,此过程得到了简化。通过探索性数据分析和数据发现等新技术克服了耗时的加载和重组阶段,使流程更快。

  • Impala 正在引领 Parquet 文件格式的使用,这是一种列式存储布局,针对数据仓库场景中常见的大规模查询进行了优化。

Impala 的特性

以下是 Cloudera Impala 的特性:

  • Impala 在 Apache 许可证下免费作为开源软件提供。

  • Impala 支持内存中数据处理,即它访问/分析存储在 Hadoop 数据节点上的数据,无需数据移动。

  • 您可以使用类似 SQL 的查询通过 Impala 访问数据。

  • 与其他 SQL 引擎相比,Impala 提供了对 HDFS 中数据的更快访问。

  • 使用 Impala,您可以将数据存储在 HDFS、Apache HBase 和 Amazon S3 等存储系统中。

  • 您可以将 Impala 与 Tableau、Pentaho、Micro Strategy 和 Zoomdata 等商业智能工具集成。

  • Impala 支持各种文件格式,例如 LZO、Sequence File、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 的数据模型是无模式的。 Hive 的数据模型是基于模式的。 Impala 的数据模型是基于模式的。
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 中的数据目录时,都需要刷新表。
广告