- Hive 教程
- Hive - 首頁
- Hive - 簡介
- Hive - 安裝
- Hive - 資料型別
- Hive - 建立資料庫
- Hive - 刪除資料庫
- Hive - 建立表
- Hive - 修改表
- Hive - 刪除表
- Hive - 分割槽
- Hive - 內建運算子
- Hive - 內建函式
- Hive - 檢視和索引
- HiveQL
- HiveQL - Select Where
- HiveQL - Select Order By
- HiveQL - Select Group By
- HiveQL - Select Joins
- Hive 有用資源
- Hive - 常見問題解答
- Hive - 快速指南
- Hive - 有用資源
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 是一個數據倉庫基礎設施軟體,可以建立使用者和 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 之間的流程。
下表定義了 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 介面。 |