最近小編的一位朋友小華學習了hiveSQL的一些常見場景及應用,也通過很多示例做了大量練習, 在心态上有一點小飄了,于是前兩天去面試了一家大資料公司。
面試官一開始也是給面子,問了hiveSQL操作視窗函數的兩道SQL題,小華都毫無疑問做出來了,心裡正美着的時候,面試官來了hive的靈魂三問:hive是如何與hadoop結合的?hive的架構大緻構成是?hive的運作流程是?于是傻眼的小華面試完之後來找到小編,希望小編能夠說一下hive這方面的内容。
要說明白hive的整體工作流程,首先需要了解一下hive的架構設計。
Hive架構設計包括三個部分
1、 Hive Clients,Hive用戶端,它為不同類型的應用程式提供不同的驅動,使得Hive可以通過類似Java、Python等語言連接配接,同時也提供了JDBC和ODBC驅動。
2、Hive Services,Hive服務端,用戶端必須通過服務端與Hive互動,主要包括:
- 使用者接口元件(CLI,HiveServer,HWI),它們分别以指令行、與web的形式連接配接Hive。
- Driver元件,該元件包含編譯器、優化器和執行引擎,它的作用是将hiveSQL語句進行解析、編譯優化、生成執行計劃,然後調用底層MR計算架構。
- Metastore元件,中繼資料服務元件。Hive資料分為兩個部分,一部分真實資料儲存在HDFS中,另一部分是真實資料的中繼資料,一般儲存在MySQL中,中繼資料儲存了真實資料的很多資訊,是對真實資料的描述。
3、Hive Storage and Computing ,包括中繼資料存儲資料庫和Hadoop叢集。Hive中繼資料存儲在RDBMS中,Hive資料存儲在HDFS中,查詢由MR完成。
對Hive整體架構設計有一定了解之後,我們再來看看Hive實際的工作流程。
接下來細化一下每個步驟。
簡而言之,Hive接到指令之後,首先會去中繼資料庫擷取中繼資料,然後把中繼資料資訊和作業計劃發送Hadoop叢集執行任務,再将最終的結果傳回。
熟悉了Hive的整個工作流程,相信下回再遇到Hive相關的面試,你也能對答如流了。趕緊再熟悉一下吧。