概述
Hive 將作為我日后工作主要使用的工具,這里分享一些相關的技術。我想通過講解hive體系結構來建立基礎。這個部分非常重要,因為接下來的文章中我們會以這些概念來加深我們對HIve的認識。當我們執行一個查詢時,在中最重要的組件有哪些,下面這張圖片可以給大家一個概觀的認識。
用戶接口
Hive 自帶以下幾種用戶接口。 CLI 就是Shell命令行JDBC/ODBC 是 Hive 的Java接口,與使用傳統數據庫JDBC的方式類似,WebGUI HWI 簡單的網頁界面,通過瀏覽器訪問,還有JDBC,ODBC 以及Thrift服務器,這個后續會單獨說明
命令執行
所有的命令和查詢都會進入到Driver,通過這個模塊進行解析編譯,對需求的計算進行優化。然后按照指定的步驟執行(通常是啟動多個MapReduce任務(JOB)來執行)。當需要啟動 MapReduce任務(job)時,HIVE 本身不會生成Java MapReduve算法程序。相反,Hive通過一個表示“JOB執行計划”的。XML文件驅動執行內置的、原生的Mapper和Reducer模塊。換句話說,這些通用的模塊函數類似於微型的語言翻譯程序,二驅動計算的“語言”是以XML形式編碼的。Hive 通過和JobTracker通信來初始化MapReduve任務(job),而不必部署在JobTracker所在的管理節點上執行。要處理的數據文件是存儲在HDFS中的,而HDFS是由NameNode進行管理的。
元數據
Metastore是一個獨立的關系型數據庫,通常使用MYSQL。Hive 會在其中保存表模式和其他系統元數據. 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等