組成及作用:
-
用戶接口:ClientCLI(hive shell)、JDBC/ODBC(java訪問hive)、WEBUI(瀏覽器訪問hive)
-
元數據:Metastore
元數據包括:表名、表所屬的數據庫(默認是default)、表的擁有者、列/分區字段、表的類型(是否是外部表)、表的數據所在目錄等;
默認存儲在自帶的derby數據庫中,推薦使用MySQL存儲Metastore
- Hadoop
使用HDFS進行存儲,使用MapReduce進行計算
- 驅動器:Driver
(1)解析器(SQL Parser):將SQL字符串轉換成抽象語法樹AST,這一步一般都用第三方工具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、字段是否存在、SQL語義是否有誤。
(2)編譯器(Physical Plan):將AST編譯生成邏輯執行計划。
(3)優化器(Query Optimizer):對邏輯執行計划進行優化。
(4)執行器(Execution):把邏輯執行計划轉換成可以運行的物理計划。對於Hive來說,就是MR/Spark。
工作原理:
-
用戶創建數據庫、表信息,存儲在hive的元數據庫中;
-
向表中加載數據,元數據記錄hdfs文件路徑與表之間的映射關系;
-
執行查詢語句,首先經過解析器、編譯器、優化器、執行器,將指令翻譯成MapReduce,提交到Yarn上執行,最后將執行返回的結果輸出到用戶交互接口。