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