Impala - 概述


什么是黑斑羚?

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

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

为什么是黑斑羚?

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 更快。

黑斑羚的优点

以下列出了 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、微观策略和 Zoom 数据等商业智能工具集成。

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

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

关系数据库和 Impala

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

黑斑羚 关系数据库
Impala 使用类似于 SQL 的查询语言,类似于 HiveQL。 关系数据库使用SQL语言。
在 Impala 中,您无法更新或删除单个记录。 在关系数据库中,可以更新或删除单个记录。
Impala 不支持事务。 关系数据库支持事务。
Impala 不支持索引。 关系数据库支持索引。
Impala 存储和管理大量数据(PB)。 与 Impala 相比,关系数据库处理的数据量较小(TB)。

Hive、Hbase 和 Impala

尽管 Cloudera Impala 使用与 Hive 相同的查询语言、元存储和用户界面,但它在某些方面与 Hive 和 HBase 有所不同。下表给出了HBase、Hive和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 中的数据目录时,就需要刷新表。