Hadoop數據倉庫框架-Hive v3.1.2系統架構

Hive 系統架構

下圖顯示了 Hive 的主要組成模塊。

Hadoop數據倉庫框架-Hive v3.1.2系統架構

1、用戶接口: shell/CLI, jdbc/odbc, webui Command Line Interface

CLI,Shell 終端命令行(Command Line Interface),採用交互形式使用 Hive 命令行與 Hive 進行交互,最常用(學習,調試,生產)。

JDBC/ODBC,是 Hive 基於 JDBC 操作提供的客戶端,用戶(開發員,運維人員)通過這連接至 Hive server 服務。

Web UI,通過瀏覽器訪問 Hive。

2、跨語言服務 : thrift server 提供了一種能力

讓用戶可以使用多種不同的語言來操縱hive。

Thrift 是 Facebook 開發的一個軟件框架,可以用來進行可擴展且跨語言的服務的開發, Hive 集成了該服務,能讓不同的編程語言調用 Hive 的接口。


3、底層的Driver: 驅動器Driver,編譯器Compiler,優化器Optimizer,執行器Executor

Driver 組件完成 HQL 查詢語句從詞法分析,語法分析,編譯,優化,以及生成邏輯執行計劃的生成。生成的邏輯執行計劃存儲在 HDFS 中,並隨後由 MapReduce 調用執行。

Hive 的核心是驅動引擎, 驅動引擎由四部分組成:

(1) 解釋器:解釋器的作用是將 HiveSQL 語句轉換為抽象語法樹(AST)

(2) 編譯器:編譯器是將語法樹編譯為邏輯執行計劃

(3) 優化器:優化器是對邏輯執行計劃進行優化

(4) 執行器:執行器是調用底層的運行框架執行邏輯執行計劃


4、元數據存儲系統 : RDBMS MySQL

元數據,通俗的講,就是存儲在 Hive 中數據的描述信息。

Hive 中的元數據通常包括:表的名字,表的列和分區及其屬性,表的屬性(內部表和外部表),表的數據所在目錄。

Metastore 默認存在自帶的 Derby 數據庫中。缺點就是不適合多用戶操作,並且數據存儲目錄不固定。數據庫跟著 Hive 走,極度不方便管理。

解決方案:通常存我們自己創建的 MySQL 庫(本地或遠程)。Hive 和 MySQL 之間通過 MetaStore 服務交互。

獲取更多Hadoop、HDFS、HBase、MapReduce、YARN、Hive等等技術內容,可訪問Hadoop大數據技術專欄。


分享到:


相關文章: