Hive - 簡介



術語“大資料”用於指代包含海量資料、高速資料以及日益增長的各種型別資料的大型資料集集合。使用傳統的資料管理系統很難處理大資料。因此,Apache 軟體基金會引入了一個名為 Hadoop 的框架來解決大資料管理和處理的挑戰。

Hadoop

Hadoop 是一個開源框架,用於在分散式環境中儲存和處理大資料。它包含兩個模組,一個是 MapReduce,另一個是 Hadoop 分散式檔案系統 (HDFS)。

  • MapReduce:它是一種並行程式設計模型,用於在大型商用硬體叢集上處理大量結構化、半結構化和非結構化資料。

  • HDFS:Hadoop 分散式檔案系統是 Hadoop 框架的一部分,用於儲存和處理資料集。它提供了一個容錯檔案系統,可在商用硬體上執行。

Hadoop 生態系統包含不同的子專案(工具),例如 Sqoop、Pig 和 Hive,這些工具用於輔助 Hadoop 模組。

  • Sqoop:它用於在 HDFS 和 RDBMS 之間匯入和匯出資料。

  • Pig:它是一個過程語言平臺,用於開發 MapReduce 操作的指令碼。

  • Hive:它是一個平臺,用於開發 SQL 型別指令碼以執行 MapReduce 操作。

注意:執行 MapReduce 操作有多種方法

  • 使用 Java MapReduce 程式處理結構化、半結構化和非結構化資料的傳統方法。
  • 使用 Pig 處理結構化和半結構化資料的 MapReduce 指令碼方法。
  • 使用 Hive 處理結構化資料的 MapReduce 的 Hive 查詢語言 (HiveQL 或 HQL) 方法。

什麼是 Hive

Hive 是一個數據倉庫基礎設施工具,用於處理 Hadoop 中的結構化資料。它位於 Hadoop 之上,用於彙總大資料,並簡化查詢和分析。

Hive 最初由 Facebook 開發,後來 Apache 軟體基金會將其接手,並在 Apache Hive 的名稱下將其進一步開發為開源專案。它被不同的公司使用。例如,亞馬遜將其用於 Amazon Elastic MapReduce。

Hive 不是

  • 關係資料庫
  • 線上事務處理 (OLTP) 設計
  • 用於即時查詢和行級更新的語言

Hive 的特性

  • 它將模式儲存在資料庫中,並將處理後的資料儲存到 HDFS 中。
  • 它專為 OLAP 設計。
  • 它提供了一種名為 HiveQL 或 HQL 的 SQL 型別查詢語言。
  • 它熟悉、快速、可擴充套件且可擴充套件。

Hive 的架構

下圖顯示了 Hive 的架構圖

Hive Architecture

此架構圖包含不同的單元。下表描述了每個單元

單元名稱 操作
使用者介面 Hive 是一個數據倉庫基礎設施軟體,可以建立使用者和 HDFS 之間的互動。Hive 支援的使用者介面包括 Hive Web UI、Hive 命令列和 Hive HD Insight(在 Windows 伺服器中)。
元儲存 Hive 選擇相應的資料庫伺服器來儲存表的模式或元資料、資料庫、表中的列、它們的資料型別以及 HDFS 對映。
HiveQL 處理引擎 HiveQL 類似於 SQL,用於查詢元儲存上的模式資訊。它是傳統 MapReduce 程式方法的替代方法之一。無需用 Java 編寫 MapReduce 程式,我們可以編寫 MapReduce 作業的查詢並對其進行處理。
執行引擎 HiveQL 處理引擎和 MapReduce 的結合部分是 Hive 執行引擎。執行引擎處理查詢並生成與 MapReduce 結果相同的的結果。它使用 MapReduce 的風格。
HDFS 或 HBASE Hadoop 分散式檔案系統或 HBASE 是將資料儲存到檔案系統中的資料儲存技術。

Hive 的工作原理

下圖顯示了 Hive 和 Hadoop 之間的流程。

How Hive Works

下表定義了 Hive 如何與 Hadoop 框架互動

步驟號 操作
1 執行查詢

Hive 介面(例如命令列或 Web UI)將查詢傳送到驅動程式(任何資料庫驅動程式,例如 JDBC、ODBC 等)以執行。

2 獲取計劃

驅動程式藉助查詢編譯器來解析查詢,以檢查語法和查詢計劃或查詢的需求。

3 獲取元資料

編譯器將元資料請求傳送到元儲存(任何資料庫)。

4 傳送元資料

元儲存將元資料作為響應傳送回編譯器。

5 傳送計劃

編譯器檢查需求並將計劃重新發送到驅動程式。到這裡,查詢的解析和編譯就完成了。

6 執行計劃

驅動程式將執行計劃傳送到執行引擎。

7 執行作業

在內部,執行作業的過程是一個 MapReduce 作業。執行引擎將作業傳送到 JobTracker(位於 Name 節點),它將此作業分配給 TaskTracker(位於 Data 節點)。在這裡,查詢執行 MapReduce 作業。

7.1 元資料操作

同時在執行過程中,執行引擎可以與元儲存執行元資料操作。

8 獲取結果

執行引擎從 Data 節點接收結果。

9 傳送結果

執行引擎將這些結果值傳送到驅動程式。

10 傳送結果

驅動程式將結果傳送到 Hive 介面。

廣告
© . All rights reserved.