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