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