Impala – 概述

Impala – 概述


什么是黑斑羚?

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

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

为什么是黑斑羚?

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,您可以访问存储在 HDFS、HBase 和 Amazon s3 中的数据,而无需了解 Java(MapReduce 作业)。您可以通过 SQL 查询的基本概念来访问它们。

  • 要在业务工具中编写查询,数据必须经过复杂的提取-转换-加载 (ETL) 循环。但是,有了 Impala,这个过程被缩短了。探索性数据分析和数据发现等新技术克服了加载和重组的耗时阶段,从而加快了过程。

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

黑斑羚的特点

以下是 cloudera Impala 的功能 –

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

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

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

  • 与其他 SQL 引擎相比,Impala 可以更快地访问 HDFS 中的数据。

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

  • 您可以将 Impala 与 Tableau、Pentaho、Micro 策略和 Zoom 数据等商业智能工具集成。

  • Impala 支持各种文件格式,例如 LZO、Sequence File、Avro、RCFile 和 Parquet。

  • Impala 使用来自 Apache Hive 的元数据、ODBC 驱动程序和 SQL 语法。

关系数据库和 Impala

Impala 使用类似于 SQL 和 HiveQL 的查询语言。下表描述了 SQL 和 Impala 查询语言之间的一些关键差异。

Impala 关系数据库
Impala uses an SQL like query language that is similar to HiveQL. 关系型数据库使用 SQL 语言。
In Impala, you cannot update or delete individual records. 在关系数据库中,可以更新或删除单个记录。
Impala does not support transactions. 关系数据库支持事务。
Impala does not support indexing. 关系数据库支持索引。
Impala stores and manages large amounts of data (petabytes). 与 Impala 相比,关系数据库处理的数据量更小(TB)。

Hive、Hbase 和 Impala

尽管 Cloudera Impala 使用与 Hive 相同的查询语言、元存储和用户界面,但它在某些方面与 Hive 和 HBase 不同。下表展示了 HBase、Hive 和 Impala 之间的对比分析。

HBase 蜂巢 黑斑羚
HBase is wide-column store database based on Apache Hadoop. It uses the concepts of BigTable. Hive 是一个数据仓库软件。使用它,我们可以访问和管理基于 Hadoop 的大型分布式数据集。 Impala 是一种用于管理、分析存储在 Hadoop 上的数据的工具。
The data model of HBase is wide column store. Hive 遵循关系模型。 Impala 遵循关系模型。
HBase is developed using Java language. Hive 是使用 Java 语言开发的。 Impala 是使用 C++ 开发的。
The data model of HBase is schema-free. Hive 的数据模型是基于 Schema 的。 Impala 的数据模型是基于 Schema 的。
HBase provides Java, RESTful and, Thrift API’s. Hive 提供 JDBC、ODBC、Thrift API。 Impala 提供 JDBC 和 ODBC API。
Supports programming languages like C, C#, C++, Groovy, Java PHP, Python, and Scala. 支持 C++、Java、PHP 和 Python 等编程语言。 Impala 支持所有支持 JDBC/ODBC 的语言。
HBase provides support for triggers. Hive 不为触发器提供任何支持。 Impala 不为触发器提供任何支持。

所有这三个数据库 –

  • 是 NOSQL 数据库。

  • 作为开源提供。

  • 支持服务器端脚本。

  • 遵循 ACID 属性,如持久性和并发性。

  • 使用分片进行分区

Impala 的缺点

使用 Impala 的一些缺点如下 –

  • Impala 不提供任何对序列化和反序列化的支持。
  • Impala 只能读取文本文件,不能读取自​​定义二进制文件。
  • 每当新记录/文件添加到 HDFS 中的数据目录时,都需要刷新表。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁