📜  Impala-概述

📅  最后修改于: 2020-11-30 04:57:33             🧑  作者: Mango


什么是黑斑羚?

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

Impala的优点

这里列出了Cloudera Impala的一些著名优势。

  • 使用impala,您可以使用传统SQL知识以闪电般的速度处理存储在HDFS中的数据。

  • 由于数据处理是在数据驻留的地方(在Hadoop群集上)进行的,因此与Impala一起使用时,存储在Hadoop上的数据不需要数据转换和数据移动。

  • 使用Impala,无需Java(MapReduce作业)即可访问HDFS,HBase和Amazon s3中存储的数据。您可以使用SQL查询的基本概念来访问它们。

  • 为了在业务工具中编写查询,数据必须经过一个复杂的提取-转换-加载(ETL)周期。但是,使用Impala可以缩短此过程。诸如探索性数据分析和数据发现之类的新技术克服了耗时的加载和重组阶段,从而使流程更快。

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

Impala的功能

以下是cloudera Impala的功能-

  • 根据Apache许可,Impala可作为开源免费提供。

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

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

  • 与其他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 Relational databases
Impala uses an SQL like query language that is similar to HiveQL. Relational databases use SQL language.
In Impala, you cannot update or delete individual records. In relational databases, it is possible to update or delete individual records.
Impala does not support transactions. Relational databases support transactions.
Impala does not support indexing. Relational databases support indexing.
Impala stores and manages large amounts of data (petabytes). Relational databases handle smaller amounts of data (terabytes) when compared to Impala.

Hive,Hbase和Impala

尽管Cloudera Impala与Hive使用相同的查询语言,元存储和用户界面,但在某些方面与Hive和HBase有所不同。下表对HBase,Hive和Impala进行了比较分析。

HBase Hive Impala
HBase is wide-column store database based on Apache Hadoop. It uses the concepts of BigTable. Hive is a data warehouse software. Using this, we can access and manage large distributed datasets, built on Hadoop. Impala is a tool to manage, analyze data that is stored on Hadoop.
The data model of HBase is wide column store. Hive follows Relational model. Impala follows Relational model.
HBase is developed using Java language. Hive is developed using Java language. Impala is developed using C++.
The data model of HBase is schema-free. The data model of Hive is Schema-based. The data model of Impala is Schema-based.
HBase provides Java, RESTful and, Thrift API’s. Hive provides JDBC, ODBC, Thrift API’s. Impala provides JDBC and ODBC API’s.
Supports programming languages like C, C#, C++, Groovy, Java PHP, Python, and Scala. Supports programming languages like C++, Java, PHP, and Python. Impala supports all languages supporting JDBC/ODBC.
HBase provides support for triggers. Hive does not provide any support for triggers. Impala does not provide any support for triggers.

所有这三个数据库-

  • 是NOSQL数据库。

  • 可作为开源。

  • 支持服务器端脚本。

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

  • 使用分片进行分区

Impala的缺点

使用Impala的一些缺点如下-

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