Impala 概述学习手册

收录于 2023-04-20 00:10:05 · English · بالعربية · Español · हिंदीName · 日本語 · Русский язык · 中文繁體

什么是Impala?

Impala 是一个 MPP(大规模并行处理)SQL 查询引擎,用于处理存储在 Hadoop 集群中的大量数据。它是一个用 C++ 和 Java 编写的开源软件。与适用于 Hadoop 的其他 SQL 引擎相比,它提供高性能和低延迟。
换句话说,Impala 是性能最高的 SQL 引擎(提供类似于 RDBMS 的体验),它提供了访问存储在 Hadoop 分布式文件系统中的数据的最快方式。

为什么是 Impala?

Impala 通过使用 HDFS、HBase、Metastore、YARN 和 Sentry 等标准组件,将传统分析数据库的 SQL 支持和多用户性能与 Apache Hadoop 的可扩展性和灵活性相结合。
借助 Impala,与 Hive 等其他 SQL 引擎相比,用户可以使用 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、Micro 策略和 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 蜂巢 Impala
HBase 是基于 Apache Hadoop 的宽列存储数据库。它使用了 BigTable 的概念。 Hive 是一个数据仓库软件。使用它,我们可以访问和管理基于 Hadoop 的大型分布式数据集。 Impala 是一种用于管理、分析存储在 Hadoop 上的数据的工具。
HBase 的数据模型是宽列存储。 Hive 遵循关系模型。 Impala 遵循关系模型。
HBase 是使用 Java 语言开发的。 Hive 是使用 Java 语言开发的。 Impala 是使用 C++ 开发的。
HBase 的数据模型是无模式的。 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 中的数据目录时,都需要刷新表。