Hive主要模塊及調(diào)用關(guān)系

Hive主要模塊及調(diào)用關(guān)系

image.png

Hive工作原理

image.png

Hive的編譯器

編譯器主要有這么幾個(gè)模塊:Parser,SemanticAnalyzer,LogicPlanGenerator。

image.png

首先這些模塊都是在編譯器中,具體來說就是在
org.apache.hadoop.hive.ql.Driver#compile(java.lang.String, boolean)
中。

Parser

在哪調(diào)用?

Parser是在
org.apache.hadoop.hive.ql.Driver#compile(java.lang.String, boolean)
中調(diào)用的,換句話說是在編譯期調(diào)用的。

調(diào)用方式是什么?

public int compile(String command, boolean resetTaskIds) {
...
      ParseDriver pd = new ParseDriver();
      ASTNode tree = pd.parse(command, ctx);
      tree = ParseUtils.findRootNonNullToken(tree);
...

有哪些模塊?

首先parse在org.apache.hadoop.hive.ql.parse包下:

  • org.apache.hadoop.hive.ql.parse.ParseDriver(解析器引擎)
  • org.apache.hadoop.hive.ql.parse.HiveParser(hive解析器)
  • org.apache.hadoop.hive.ql.parse.ParseUtils(解析工具)
image.png

各個(gè)模塊有哪些功能?

ParserDriver:

Hive采用Antlr實(shí)現(xiàn)SQL的詞法語法解析,其中語法規(guī)則定義在.g的文件中(在org.apache.hadoop.hive.ql.parse包下,可以看到.g文件)。在0.10版本之前,Hive.g文件是一個(gè),隨著語法規(guī)則的越來越復(fù)雜,由語法規(guī)則生成的Java解析類可能超過Java類文件的最大上限,0.11版本將Hive.g文件拆成了5個(gè)文件(詞法規(guī)則HiveLexer.g和4個(gè)語法規(guī)則文件)

語法文件 語法類 功能
FromClauseParser.g org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser from語法解析器
HiveLexer.g org.apache.hadoop.hive.ql.parse.HiveLexer Hive詞法規(guī)則
HiveParser.g org.apache.hadoop.hive.ql.parse.HiveParser 解析規(guī)則
IdentifiersParser.g org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser 標(biāo)示語法解析
SelectClauseParser.g org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser select語法解析

功能是什么?

工程解讀

accumulo-handler(不關(guān)注)

hive-accumulo-handler工程。hive對(duì)accumulo對(duì)支持。

Apache Accumulo 是一個(gè)可靠的、可伸縮的、高性能的排序分布式的 Key-Value 存儲(chǔ)解決方案,基于單元訪問控制以及可定制的服務(wù)器端處理。使用 Google BigTable 設(shè)計(jì)思路,基于 Apache Hadoop、ZookeeperThrift 構(gòu)建 。

ant(不關(guān)注)

hive-ant工程
應(yīng)該是一個(gè)打包的工具,沒細(xì)研究。

beeline(重點(diǎn))

*hive-beeline工程
HS2的beeline客戶端。用戶可以通過beeline的方式連接hive。

bin(重點(diǎn))

bin目錄
這個(gè)目錄下是hive相關(guān)的命令腳本,包括hive,beeline等等。

checkstyle

checkstyle目錄
這里是代碼規(guī)范相關(guān)的文件。

cli(重點(diǎn))

hive-cli工程
該工程下是Hive Cli相關(guān)。

common

hive-common工程
通用common包在這個(gè)工程下。

conf

conf目錄
這個(gè)目錄下是配置文件模版,如hive-site.xml。

contrib(不關(guān)注)

hive-contrib工程
這里有一些hive貢獻(xiàn)出來的實(shí)現(xiàn),如行自增函數(shù)UDFRowSequence等。

data(不關(guān)注)

data目錄
這里有配置還有一些測(cè)試文件等。

dev-support(不關(guān)注)

dev-support目錄
這里是一些開發(fā)相關(guān)的工具,如eclipse風(fēng)格配置文件等。

docs(不關(guān)注)

docs目錄
這里是一些文檔相關(guān),如hive的logo圖片,css樣式等。

findbugs(不關(guān)注)

findbugs目錄
插件FindBugs的配置文件。

hbase-handler

hive-hbase-handler工程
hive對(duì)Hbase的相關(guān)支持。

hcatalog

hive-hcatalog工程
hive對(duì)pig的支持。

hwi

hive-hwi工程
hwi是Hive Web Ui的縮寫,顧名思義就是Hive的web界面相關(guān)。

itests

jdbc(重點(diǎn))

hive-jdbc工程
hive對(duì)jdbc訪問方式的支持。

lib

lib目錄
用于存放第三方j(luò)ar

metastore(重點(diǎn))

metastore服務(wù)工程
hive的元數(shù)據(jù)存儲(chǔ)服務(wù),metastore不負(fù)責(zé)元數(shù)據(jù)的存儲(chǔ),只負(fù)責(zé)元數(shù)據(jù)的查詢服務(wù),元數(shù)據(jù)存儲(chǔ)通過mysql等。

odbc(重點(diǎn))

odbc工程
hive對(duì)odbc連接的支持

packaging

hive-packaging工程
打包工程,編譯完的包在packaging路徑下。

ql(重點(diǎn))

hive-exec工程
這是hive的核心工程,Driver等都在這個(gè)工程中。

serde

hive-serde
hive對(duì)序列化相關(guān)實(shí)現(xiàn)。

service(重點(diǎn))

hive-service
這里是通常所說的hiveserver2服務(wù)工程。

shims

hive-shims-aggregator工程
這里是hive和多版本hadoop兼容的支持。

spark-client

spark-client工程
hive對(duì)spark的支持。

testutils

testutils工程
該工程主要是一些測(cè)試項(xiàng)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 想寫一個(gè)故事……關(guān)于……關(guān)于一個(gè)暗戀的故事,整個(gè)故事從開始到結(jié)束僅僅22天。 有些愛還沒說出口,就已成過眼云煙。...
    亦辰小屋閱讀 217評(píng)論 1 0
  • 亦正亦邪,隨心所欲,不屑于凡塵俗世,穿上西裝就是紳士,摘了領(lǐng)帶亦可以做流氓 初春,一場(chǎng)雨過后,氣溫驟降,少女們剛剛...
    小才不才閱讀 551評(píng)論 0 2
  • 今天花費(fèi)了2小時(shí)40分鐘在網(wǎng)上刷了一通關(guān)于英語學(xué)習(xí)的帖子,主要在知乎和簡(jiǎn)書上收獲一些做計(jì)劃的靈感,然后就是執(zhí)行了。...
    遠(yuǎn)山不遠(yuǎn)閱讀 226評(píng)論 0 0
  • 高效能慢生活踐行第213天 2018.8.22?吳虞晨間檢視?悠閑 就寢22:10晨起4:13周三/雨天 昨日??午...
    _萬山無阻_閱讀 405評(píng)論 0 0

友情鏈接更多精彩內(nèi)容