Impala - 概述



什麼是 Impala?

Impala 是一個用於處理儲存在 Hadoop 叢集中的海量資料的 MPP(大規模並行處理)SQL 查詢引擎。它是一個用 C++ 和 Java 編寫的開源軟體。與其他 Hadoop SQL 引擎相比,它提供了更高的效能和更低的延遲。

換句話說,Impala 是效能最高的 SQL 引擎(提供類似 RDBMS 的體驗),它提供訪問儲存在 Hadoop 分散式檔案系統中的資料的最快方法。

為什麼選擇 Impala?

Impala 透過利用 HDFS、HBase、元資料儲存、YARN 和 Sentry 等標準組件,將傳統分析資料庫的 SQL 支援和多使用者效能與 Apache Hadoop 的可擴充套件性和靈活性相結合。

  • 使用 Impala,使用者可以使用 SQL 查詢以比其他 SQL 引擎(如 Hive)更快的速度與 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 檔案格式的使用,這是一種列式儲存佈局,針對資料倉庫場景中常見的大規模查詢進行了最佳化。

Impala 的特性

以下是 Cloudera Impala 的特性:

  • Impala 在 Apache 許可證下免費作為開源軟體提供。

  • Impala 支援記憶體中資料處理,即它訪問/分析儲存在 Hadoop 資料節點上的資料,無需資料移動。

  • 您可以使用類似 SQL 的查詢透過 Impala 訪問資料。

  • 與其他 SQL 引擎相比,Impala 提供了對 HDFS 中資料的更快訪問。

  • 使用 Impala,您可以將資料儲存在 HDFS、Apache HBase 和 Amazon S3 等儲存系統中。

  • 您可以將 Impala 與 Tableau、Pentaho、Micro Strategy 和 Zoomdata 等商業智慧工具整合。

  • 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 儲存和管理大量資料(PB 級)。 與 Impala 相比,關係資料庫處理的資料量較小(TB 級)。

Hive、HBase 和 Impala

儘管 Cloudera Impala 使用與 Hive 相同的查詢語言、元資料儲存和使用者介面,但它在某些方面與 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 的資料模型是基於模式的。
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 中的資料目錄時,都需要重新整理表。
廣告

© . All rights reserved.