Hive架構與工做原理

file

組成及做用:java

  1. 用戶接口:ClientCLI(hive shell)、JDBC/ODBC(java訪問hive)、WEBUI(瀏覽器訪問hive)
  2. 元數據:Metastore

元數據包括:表名、表所屬的數據庫(默認是default)、表的擁有者、列/分區字段、表的類型(是不是外部表)、表的數據所在目錄等;shell

默認存儲在自帶的derby數據庫中,推薦使用MySQL存儲Metastore數據庫

  1. Hadoop

使用HDFS進行存儲,使用MapReduce進行計算瀏覽器

  1. 驅動器:Driver

(1)解析器(SQL Parser):將SQL字符串轉換成抽象語法樹AST,這一步通常都用第三方工具庫完成,好比antlr;對AST進行語法分析,好比表是否存在、字段是否存在、SQL語義是否有誤。工具

(2)編譯器(Physical Plan):將AST編譯生成邏輯執行計劃。oop

(3)優化器(Query Optimizer):對邏輯執行計劃進行優化。優化

(4)執行器(Execution):把邏輯執行計劃轉換成能夠運行的物理計劃。對於Hive來講,就是MR/Spark。spa

工做原理:翻譯

  1. 用戶建立數據庫、表信息,存儲在hive的元數據庫中;
  2. 向表中加載數據,元數據記錄hdfs文件路徑與表之間的映射關係;
  3. 執行查詢語句,首先通過解析器、編譯器、優化器、執行器,將指令翻譯成MapReduce,提交到Yarn上執行,最後將執行返回的結果輸出到用戶交互接口。
相關文章
相關標籤/搜索