Impala 概述
什么是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 中的数据目录时,都需要刷新表。