impala 概述

2018-01-03 17:49 更新

什么是Impala?

Impala是用于處理存儲(chǔ)在Hadoop集群中的大量數(shù)據(jù)的MPP(大規(guī)模并行處理)SQL查詢引擎。 它是一個(gè)用C ++和Java編寫(xiě)的開(kāi)源軟件。 與其他Hadoop的SQL引擎相比,它提供了高性能和低延遲。

換句話說(shuō),Impala是性能最高的SQL引擎(提供類似RDBMS的體驗(yàn)),它提供了訪問(wèn)存儲(chǔ)在Hadoop分布式文件系統(tǒng)中的數(shù)據(jù)的最快方法。

為什么選擇Impala?

Impala通過(guò)使用標(biāo)準(zhǔn)組件(如HDFS,HBase,Metastore,YARN和Sentry)將傳統(tǒng)分析數(shù)據(jù)庫(kù)的SQL支持和多用戶性能與Apache Hadoop的可擴(kuò)展性和靈活性相結(jié)合。

  • 使用Impala,與其他SQL引擎(如Hive)相比,用戶可以使用SQL查詢以更快的方式與HDFS或HBase進(jìn)行通信。

  • Impala可以讀取Hadoop使用的幾乎所有文件格式,如Parquet,Avro,RCFile。

Impala將相同的元數(shù)據(jù),SQL語(yǔ)法(Hive SQL),ODBC驅(qū)動(dòng)程序和用戶界面(Hue Beeswax)用作Apache Hive,為面向批量或?qū)崟r(shí)查詢提供熟悉且統(tǒng)一的平臺(tái)。

與Apache Hive不同,Impala不基于MapReduce算法。 它實(shí)現(xiàn)了一個(gè)基于守護(hù)進(jìn)程的分布式架構(gòu),它負(fù)責(zé)在同一臺(tái)機(jī)器上運(yùn)行的查詢執(zhí)行的所有方面。

因此,它減少了使用MapReduce的延遲,這使Impala比Apache Hive快。

Impala的優(yōu)點(diǎn)

以下是Cloudera Impala的一些值得注意的優(yōu)點(diǎn)的列表。

  • 使用impala,您可以使用傳統(tǒng)的SQL知識(shí)以極快的速度處理存儲(chǔ)在HDFS中的數(shù)據(jù)。

  • 由于在數(shù)據(jù)駐留(在Hadoop集群上)時(shí)執(zhí)行數(shù)據(jù)處理,因此在使用Impala時(shí),不需要對(duì)存儲(chǔ)在Hadoop上的數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)移動(dòng)。

  • 使用Impala,您可以訪問(wèn)存儲(chǔ)在HDFS,HBase和Amazon s3中的數(shù)據(jù),而無(wú)需了解Java(MapReduce作業(yè))。您可以使用SQL查詢的基本概念訪問(wèn)它們。

  • 為了在業(yè)務(wù)工具中寫(xiě)入查詢,數(shù)據(jù)必須經(jīng)歷復(fù)雜的提取 - 變換負(fù)載(ETL)周期。但是,使用Impala,此過(guò)程縮短了。加載和重組的耗時(shí)階段通過(guò)新技術(shù)克服,如探索性數(shù)據(jù)分析和數(shù)據(jù)發(fā)現(xiàn),使過(guò)程更快。

  • Impala正在率先使用Parquet文件格式,這是一種針對(duì)數(shù)據(jù)倉(cāng)庫(kù)場(chǎng)景中典型的大規(guī)模查詢進(jìn)行優(yōu)化的柱狀存儲(chǔ)布局。

Impala的功能

以下是cloudera Impala的功能 - 

  • Impala可以根據(jù)Apache許可證作為開(kāi)源免費(fèi)提供。

  • Impala支持內(nèi)存中數(shù)據(jù)處理,即,它訪問(wèn)/分析存儲(chǔ)在Hadoop數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù),而無(wú)需數(shù)據(jù)移動(dòng)。

  • 您可以使用Impala使用類SQL查詢?cè)L問(wèn)數(shù)據(jù)。

  • 與其他SQL引擎相比,Impala為HDFS中的數(shù)據(jù)提供了更快的訪問(wèn)。

  • 使用Impala,您可以將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)系統(tǒng)中,如HDFS,Apache HBase和Amazon s3。

  • 您可以將Impala與業(yè)務(wù)智能工具(如Tableau,Pentaho,Micro策略和縮放數(shù)據(jù))集成。

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

  • Impala使用Apache Hive的元數(shù)據(jù),ODBC驅(qū)動(dòng)程序和SQL語(yǔ)法。

關(guān)系數(shù)據(jù)庫(kù)和Impala

Impala使用類似于SQL和HiveQL的Query語(yǔ)言。 下表描述了SQL和Impala查詢語(yǔ)言之間的一些關(guān)鍵差異。

Impala關(guān)系型數(shù)據(jù)庫(kù)
Impala使用類似于HiveQL的類似SQL的查詢語(yǔ)言。關(guān)系數(shù)據(jù)庫(kù)使用SQL語(yǔ)言。
在Impala中,您無(wú)法更新或刪除單個(gè)記錄。在關(guān)系數(shù)據(jù)庫(kù)中,可以更新或刪除單個(gè)記錄。
Impala不支持事務(wù)。關(guān)系數(shù)據(jù)庫(kù)支持事務(wù)。
Impala不支持索引。關(guān)系數(shù)據(jù)庫(kù)支持索引。
Impala存儲(chǔ)和管理大量數(shù)據(jù)(PB)。 與Impala相比,關(guān)系數(shù)據(jù)庫(kù)處理的數(shù)據(jù)量較少(TB)。

Hive,Hbase和Impala

雖然Cloudera Impala使用與Hive相同的查詢語(yǔ)言,元數(shù)據(jù)和用戶界面,但在某些方面它與Hive和HBase不同。 下表介紹了HBase,Hive和Impala之間的比較分析。

HBaseHive Impala
HBase是基于Apache Hadoop的寬列存儲(chǔ)數(shù)據(jù)庫(kù)。 它使用BigTable的概念。Hive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)軟件。 使用它,我們可以訪問(wèn)和管理基于Hadoop的大型分布式數(shù)據(jù)集。Impala是一個(gè)管理,分析存儲(chǔ)在Hadoop上的數(shù)據(jù)的工具。
HBase的數(shù)據(jù)模型是寬列存儲(chǔ)。Hive遵循關(guān)系模型。Impala遵循關(guān)系模型。
HBase是使用Java語(yǔ)言開(kāi)發(fā)的。Hive是使用Java語(yǔ)言開(kāi)發(fā)的。Impala是使用C ++開(kāi)發(fā)的。
HBase的數(shù)據(jù)模型是無(wú)模式的。Hive的數(shù)據(jù)模型是基于模式的。Impala的數(shù)據(jù)模型是基于模式的。
HBase提供Java,RESTful和Thrift API。Hive提供JDBC,ODBC,Thrift API。Impala提供JDBC和ODBC API。
支持C,C#,C ++,Groovy,Java PHP,Python和Scala等編程語(yǔ)言。支持C ++,Java,PHP和Python等編程語(yǔ)言。Impala支持所有支持JDBC / ODBC的語(yǔ)言。
HBase提供對(duì)觸發(fā)器的支持。Hive不提供任何觸發(fā)器支持。Impala不提供對(duì)觸發(fā)器的任何支持。

所有這三個(gè)數(shù)據(jù)庫(kù) - 

  • 是NOSQL數(shù)據(jù)庫(kù)。

  • 可用作開(kāi)源。

  • 支持服務(wù)器端腳本。

  • 按照ACID屬性,如Durability和Concurrency。

  • 使用分片進(jìn)行分區(qū)。

Impala的缺點(diǎn)

使用Impala的一些缺點(diǎn)如下 - 

  • Impala不提供任何對(duì)序列化和反序列化的支持。
  • Impala只能讀取文本文件,而不能讀取自定義二進(jìn)制文件。
  • 每當(dāng)新的記錄/文件被添加到HDFS中的數(shù)據(jù)目錄時(shí),該表需要被刷新。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)