來(lái)源:北大青鳥(niǎo)總部 2023年01月05日 13:35
最近小編的一位朋友小華學(xué)習(xí)了hiveSQL的一些常見(jiàn)場(chǎng)景及應(yīng)用,也通過(guò)很多示例做了大量練習(xí), 在心態(tài)上有一點(diǎn)小飄了,于是前兩天去面試了一家大數(shù)據(jù)公司。
面試官一開(kāi)始也是給面子,問(wèn)了hiveSQL操作窗口函數(shù)的兩道SQL題,小華都毫無(wú)疑問(wèn)做出來(lái)了,心里正美著的時(shí)候,面試官來(lái)了hive的靈魂三問(wèn):hive是如何與hadoop結(jié)合的?hive的架構(gòu)大致構(gòu)成是?hive的運(yùn)行流程是?于是傻眼的小華面試完之后來(lái)找到小編,希望小編能夠說(shuō)一下hive這方面的內(nèi)容。
要說(shuō)明白hive的整體工作流程,首先需要了解一下hive的架構(gòu)設(shè)計(jì)
Hive架構(gòu)設(shè)計(jì)包括三個(gè)部分
Hive Clients,Hive客戶端,它為不同類(lèi)型的應(yīng)用程序提供不同的驅(qū)動(dòng),使得Hive可以通過(guò)類(lèi)似Java、Python等語(yǔ)言連接,同時(shí)也提供了JDBC和ODBC驅(qū)動(dòng)。
Hive Services,Hive服務(wù)端,客戶端必須通過(guò)服務(wù)端與Hive交互,主要包括:
用戶接口組件(CLI,HiveServer,HWI),它們分別以命令行、與web的形式連接Hive。
Driver組件,該組件包含編譯器、優(yōu)化器和執(zhí)行引擎,它的作用是將hiveSQL語(yǔ)句進(jìn)行解析、編譯優(yōu)化、生成執(zhí)行計(jì)劃,然后調(diào)用底層MR計(jì)算框架。
Metastore組件,元數(shù)據(jù)服務(wù)組件。Hive數(shù)據(jù)分為兩個(gè)部分,一部分真實(shí)數(shù)據(jù)保存在HDFS中,另一部分是真實(shí)數(shù)據(jù)的元數(shù)據(jù),一般保存在MySQL中,元數(shù)據(jù)保存了真實(shí)數(shù)據(jù)的很多信息,是對(duì)真實(shí)數(shù)據(jù)的描述。
Hive Storage and Computing ,包括元數(shù)據(jù)存儲(chǔ)數(shù)據(jù)庫(kù)和Hadoop集群。Hive元數(shù)據(jù)存儲(chǔ)在RDBMS中,Hive數(shù)據(jù)存儲(chǔ)在HDFS中,查詢由MR完成。
對(duì)Hive整體架構(gòu)設(shè)計(jì)有一定了解之后,我們?cè)賮?lái)看看Hive實(shí)際的工作流程
接下來(lái)細(xì)化一下每個(gè)步驟。
簡(jiǎn)而言之,Hive接到命令之后,首先會(huì)去元數(shù)據(jù)庫(kù)獲取元數(shù)據(jù),然后把元數(shù)據(jù)信息和作業(yè)計(jì)劃發(fā)送Hadoop集群執(zhí)行任務(wù),再將最終的結(jié)果返回。
熟悉了Hive的整個(gè)工作流程,相信下回再遇到Hive相關(guān)的面試,你也能對(duì)答如流了。趕緊再熟悉一下吧~