什么是Impala?
Impala是一个MPP(大规模并行处理)SQL查询引擎,用于处理存储在Hadoop集群中的大量数据.它是一个用C ++和Java编写的开源软件.与Hadoop的其他SQL引擎相比,它提供了高性能和低延迟.
换句话说,Impala是性能最高的SQL引擎(提供类似RDBMS的体验),它提供了最快的方式访问存储在Hadoop分布式文件系统中的数据.
为什么选择Impala?
Impala结合了SQL支持和传统分析的多用户性能数据库具有Apache Hadoop的可扩展性和灵活性,利用HDFS,HBase,Metastore,YARN和Sentry等标准组件.
使用Impala,与其他SQL引擎(如Hive)相比,用户可以使用SQL查询以更快的方式与HDFS或HBase进行通信.
Impala几乎可以阅读所有文件格式,如Hadoop使用的Parquet,Avro,RCFile.
Impala使用相同的元数据,SQL语法(Hive SQL) ,ODBC驱动程序和用户界面(Hue Beeswax)作为Apache Hive,提供了一个熟悉的面向批处理或实时查询的统一平台.
与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数据节点上的数据而不会移动数据.
您可以使用类似SQL的查询使用Impala访问数据.
Impala可以更快地访问HDFS中的数据其他SQL引擎.
使用Impala,您可以将数据存储在HDFS,Apache HBase和Amazon s3等存储系统中.
您可以将Impala与Table等商业智能工具集成au,Pentaho,Micro策略和缩放数据.
Impala支持各种文件格式,如LZO,Sequence File,Avro,RCFile和Parquet.
Impala使用Apache Hive中的元数据,ODBC驱动程序和SQL语法.
关系数据库和Impala
Impala使用类似于SQL和HiveQL的查询语言.下表描述了SQL和Impala查询语言之间的一些关键差异.
Impala | 关系数据库 |
---|---|
Impala使用类似于HiveQL的类似SQL的查询语言. | 关系数据库使用SQL语言. |
在Impala中,您无法更新或删除单个记录. | 在关系数据库中,可以更新或删除单个记录. |
Impala不支持交易. | 关系数据库支持事务. |
Impala不支持索引. | 关系数据库支持索引. |
Impala存储和管理大量数据(petabytes). | 关系与Impala相比,al数据库处理的数据量较小(太字节数). |
Hive,Hbase和Impala
虽然Cloudera Impala使用与Hive相同的查询语言,Metastore和用户界面,但在某些方面它与Hive和HBase不同.下表显示了HBase,Hive和Impala之间的比较分析.
HBase | Hive | Impala |
---|---|---|
HBase是基于Apache Hadoop的宽列商店数据库.它使用BigTable的概念. | Hive是一个数据仓库软件.使用它,我们可以访问和管理基于Hadoop的大型分布式数据集. | Impala是一个管理,分析存储在Hadoop上的数据的工具. |
HBase的数据模型是宽列存储. | Hive遵循关系模型. | Impala遵循关系模型. |
HBase是使用Java语言开发的. | Hive是使用Java语言开发的. | Impala是使用C ++开发的. |
HBase的数据模型是无架构. | Hive的数据模型是基于模式的. | 数据模型Impala是基于Schema的. |
HBase提供Java,RESTful和Thrift API's. | 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的数据目录中时,表格都需要刷新.