Hive介紹及其架構
本文簡單介紹一下Hive以及其架構。
一、Hive是什麼
Hive是由FACEBOOK公司開源的一個基於Hadoop框架的一個數據倉庫(data warehouse)工具,可以講結構化的檔案對映為一張資料表,並能提供SQL查詢功能,即將SQL語言轉化為MapReduce任務進行執行。
二、FACEBOOK公司為何要開發Hive
講到FACEBOOK為何開發Hive,就要先談到Hadoop下的MapReduce計算框架。MapReduce將所有的計算都處理為兩種基本資料運算map和reduce,所有的操作都是基於“鍵值對”,處理起來及其複雜,而且執行效率不高,鍵值對的設計也需要很大的技巧。以下文一個“wordcount”為例,一個簡單的統計詞頻的操作就需要編寫大量的程式碼。對於資料維護人員的JAVA基礎要求也較高。
所以,將一些常見的SQL查詢功能的實現簡單化能夠給資料庫人員帶來很大的方便。
三、Hive的架構
Hive是底層封裝了Hadoop的資料倉庫處理工具,是執行在Hadoop基礎上的。Hive架構主要分為以下幾個部分:Client(使用者介面)、元資料儲存、直譯器-編譯器-優化器-執行器、Driver驅動等(如下圖所示)。
使用者介面(Client):主要包含CLI(command language interface)、JDBC或ODBC、WEBUI(以瀏覽器訪問hive);
元資料(Metastore):包括表名、表所屬的資料庫、表的擁有者、列/分割槽欄位、表的型別、表的資料所在目錄等內容;
HDFS&MapReduce:指的是hive使用HDFS進行儲存,使用MapReduce進行計算;
直譯器:將SQL字串轉化為抽象語法數AST;
編譯器:將AST編譯成邏輯執行計劃;
優化器:對邏輯執行計劃進行優化;
執行器:將邏輯執行計劃轉成可執行的物理計劃,如MR/Spark
四、Hive的資料儲存
Hive所有的資料都是儲存在HDFS檔案系統當中的,由於HADOOP由JAVA編寫,HIVE中的資料型別也源於JAVA。Hive的所有SQL分析操作都轉換為MapReduce中的JOB任務來處理。所以說Hive是Hadoop的資料倉庫。