1. 程式人生 > >Hive介紹及其架構

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的資料倉庫。