【Hive 精選】Hive 架構詳解

2.Hive 架構

2.1 架構總覽

  • UI 即 CLI/JDBC:用戶可以通過該界面提交 SQL 語句
  • Driver:從 UI 接收 SQL 語句的組件,接著將 SQL 提交給解析器 Compiler,然后通過執(zhí)行引擎 Execution Engine 把作業(yè)轉化成 DAG。
  • Compiler:首先將 SQL 進行語法、語義分析,然后生成邏輯計劃并進行優(yōu)化,期間使用了 Metastore 存儲的表和分區(qū)元數據。
  • Execution Engine:將收到的邏輯計劃生成和優(yōu)化物理計劃。Execution Engine 可以根據系統(tǒng)的資源情況、數據分布和查詢需求等因素,選擇最合適的執(zhí)行策略和操作順序,例如選擇合適的連接算法、選擇合適的數據分區(qū)和并行度等。
  • Metastore:存儲倉庫中各種表和分區(qū)的所有結構信息的組件,包括列和列類型信息,用于讀寫數據的序列化和反序列化器,以及存儲數據的相應HDFS文件。

說明:所謂的 Client 有 2 種分別是 HiveServer2 和 Hive CLI,它包含 CLI、Driver、Compiler 和 Execution Engine 模塊的能力。

Metastore、HiveServer2 和 Hive CLI 之間有什么關系?
Hive CLI 不依賴 HiveServer2,但 2 者都依賴 Metastore。

HiveServer2 和 Hive CLI 有啥區(qū)別?

  • HiveServer2 是 Hive 的服務端組件,提供了遠程連接和多用戶并發(fā)查詢的功能。HiveServer2 允許客戶端使用不同的協議( JDBC、ODBC 和 Thrift)連接到 Hive,并通過這些協議發(fā)送 HiveQL 查詢請求。HiveServer2 接收到查詢請求后,會將其轉發(fā)給 Hive 驅動器(Hive Driver)進行處理。Hive 驅動器負責編譯和執(zhí)行查詢計劃,并將結果返回給 HiveServer2,然后 HiveServer2 再將結果返回給客戶端。
  • Hive CLI 是 Hive 提供的命令行界面,允許用戶通過命令行輸入 HiveQL(Hive Query Language)語句來執(zhí)行查詢。Hive CLI 是直接運行在客戶端機器上的,它會解析用戶輸入的 HiveQL 語句,并將其轉換為對應的 MapReduce 或 Tez 任務,然后將任務提交給 Hadoop 集群執(zhí)行。
  • 高可用方面,Hive CLI 沒有 HA 功能,而 HiveServer2 支持 HA,解決了應用端的并發(fā)和負載均衡等問題。

SQL 語句的提交流程:UI 調用 Driver 的執(zhí)行接口,Driver 為查詢創(chuàng)建一個會話句柄,并將查詢發(fā)送給 Compiler 生成執(zhí)行計劃。Compiler 從 Metastore 中獲取必要的元數據。這些元數據用于對查詢樹中的表達式進行類型檢查,以及根據查詢謂詞來修剪分區(qū)。Compiler 生成的計劃是一個階段的有向無環(huán)圖,每個階段可以是一個 map/reduce 作業(yè)。Execution Engine 執(zhí)行引擎將這些階段提交給適當的組件,在每個任務(mapper/reducer)中,反序列化讀取保存在 HDFS 表或中間結果的數據,接著把中間結果序列化到臨時 HDFS 文件,如此類推。

2.2 SQL 語句的提交流程詳解

image.png
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Hive是什么? Hive是一種基于Hadoop的數據庫技術并提供完整的sql查詢功能, . HIVE能做什么? ...
    日出卡爾閱讀 2,859評論 0 0
  • 0x00 什么是hive hive是構建在hadoop之上的數據倉庫組件,是目前大數據領域最常用的數據倉庫開源實現...
    曹操a閱讀 1,233評論 0 1
  • 前言: Hadoop的課程已經告一段落,基本上在零基礎課程里不會再出現了,接下來的課程由若總來上,第一講Have。...
    ly稻草閱讀 4,327評論 1 9
  • 一、Hive簡介 1.1 Hive是什么 由Facebook開源的一款基于hadoop的用于統(tǒng)計海量結構化數據的一...
    這一刻_776b閱讀 3,788評論 0 1
  • Hive介紹 什么是數據倉庫? 數據倉庫之父比爾?恩門(Bill Inmon)在1991年出版的"Building...
    蠟筆小虎_007閱讀 628評論 0 1

友情鏈接更多精彩內容