Hive学习笔记 —— Hive的体系结构
1. Hive的體系結構
-
Hadoop
用HDFS進行存儲,利用MapReduce進行計算
-
元數據存儲(MetaStore)
通常是存儲在關心數據庫,如mysql、derby中
在Hive執行HQL語句,其HQL語句會被解析成一個MapReduce作業,并提交到Hadoop集群上進行運行,得到的結果返回給客戶端程序,這個過程主要是由JobTracker進行任務調度。
2. Hive的體系結構之元數據
Hive的元數據
元數據與表中存儲的具體數據無關,反映的是表本身的信息,這種信息就是元信息,即元數據。
-
Hive將元數據存儲在數據庫中(metastore),支持mysql、derby、oracle等數據庫
默認采用derby數據庫來存儲Hive的元數據
-
Hive中的元數據包括表的名字、表的列和分區及其屬性、表的屬性(是否為外部表等)、表的數據所在目錄等
圖中的左邊為存儲在hive中的數據表,右邊為相應的數據表的元數據信息。
3. Hive的體系結構之HQL的執行過程
舉例:一條HQL語句如何在hive中進行查詢
在hive中,提供了三個組件來幫助我們工作,即解釋器、編譯器、優化器
解析器、編譯器、優化器完成HQL查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃(Plan)的生成。生成的查詢計劃存儲在HDFS中,并在隨后由MapReduce調用執行。
執行計劃,類似于javac命令,將.java的源文件編譯成 .class文件,最后執行的就是 .class 這個文件
連接oracle數據庫
查詢10號部門的員工信息
生成執行計劃
(由于沒有對部門創建索引,所以需要進行全表掃描)
全表掃描的代價會相對較高。
基于部門號創建索引
重新生成執行計劃
重新查看該select的執行計劃
(會根據索引進行掃描)
總結
以上是生活随笔為你收集整理的Hive学习笔记 —— Hive的体系结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hive学习笔记 —— Hive概述
- 下一篇: Hive学习笔记 —— Hive的安装