Hive架構和工作原理


Hive架構和工作原理

from:https://cloud.tencent.com/developer/news/362488

一、Hive 架構

下面是Hive的架構圖。

Hive的體系結構可以分為以下幾部分:

1、用戶接口主要有三個:CLI,Client 和 WUI。其中最常用的是CLI,Cli啟動的時候,會同時啟動一個Hive副本。Client是Hive的客戶端,用戶連接至Hive Server。在啟動 Client模式的時候,需要指出Hive Server所在節點,並且在該節點啟動Hive Server。 WUI是通過瀏覽器訪問Hive。

2、Hive將元數據存儲在數據庫中,如mysql、derby。Hive中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。

3、解釋器、編譯器、優化器完成HQL查詢語句從詞法分析、語法分析、編譯、優化以及查詢計划的生成。生成的查詢計划存儲在HDFS中,並在隨后有MapReduce調用執行。

4、Hive的數據存儲在HDFS中,大部分的查詢、計算由MapReduce完成(包含*的查詢,比如select * from tbl不會生成MapRedcue任務)。

二、元數據存儲

Hive將元數據存儲在RDBMS中,有三種模式可以連接到數據庫:

1、元數據庫內嵌模式:此模式連接到一個In-memory 的數據庫Derby,一般用於Unit Test。

2、元數據庫mysql模式:通過網絡連接到一個數據庫中,是最經常使用到的模式。

3、MetaStoreServe訪問元數據庫模式:用於非Java客戶端訪問元數據庫,在服務器端啟動MetaStoreServer,客戶端利用Thrift協議通過MetaStoreServer訪問元數據庫。

對於數據存儲,Hive沒有專門的數據存儲格式,也沒有為數據建立索引,用戶可以非常自由的組織Hive中的表,只需要在創建表的時候告訴Hive數據中的列分隔符和行分隔符,Hive就可以解析數據。Hive中所有的數據都存儲在HDFS中,存儲結構主要包括數據庫、文件、表和視圖。Hive中包含以下數據模型:Table內部表,External Table外部表,Partition分區,Bucket桶。Hive默認可以直接加載文本文件,還支持sequence file 、RCFile。

4、三種模式匯總:

三、Hive 工作原理

Hive 工作原理如下圖所示。

Hive構建在Hadoop之上

1、HQL中對查詢語句的解釋、優化、生成查詢計划是由Hive完成的

2、所有的數據都是存儲在Hadoop中

3、查詢計划被轉化為MapReduce任務,在Hadoop中執行(有些查詢沒有MR任務,如:select * from table)

4、Hadoop和Hive都是用UTF-8編碼的

Hive編譯器的組成:

Hive編譯流程如下

四、Hive安裝和部署

1、解壓縮 hive 安裝包

2、安裝並啟動mysql

3、修改 mysql 密碼

4、給root用戶訪問授權

5、建立鏈接,該命令在 hive 安裝目錄的 lib 目錄下建立軟鏈接,指向/usr/share/java/mysql-connector-java.jar

6、配置環境變量

生效環境變量

7、修改hadoop的配置文件core-site.xml

增加如下:

8、修改hive的配置文件hive-site.xml

增加如下:

注釋:

hive.metastore.uris 中的“hadoop“含義為 metastore 所在的機器(啟動metastore 的方法見下一節)

javax.jdo.option.ConnectionURL 中的“hadoop”為 mysql 安裝機器的hostname

javax.jdo.option.ConnectionUserName 和javax.jdo.option.ConnectionPassword

分別為 mysql 的訪問用戶和密碼

fs.defaultFS 為 HDFS 的 namenode 啟動的機器地址

beeline.hs2.connection.user 和 beeline.hs2.connection.password 是 beeline 方式

訪問的用戶名和密碼,可任意指定,但在 beeline 訪問時要寫入你指定的這個

(具體參考最后一部分)

9、啟動hive metastore

10、啟動 hiveserver2

11、hive 常見兩種訪問方式

hive

beeline

!connect jdbc:hive2://bigdata:10000/default bigdata bigdata


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM