apache Hive介紹

1.hive 基本介紹:

Hive 是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL ),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL ,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的複雜的分析工作。

Hive是SQL解析引擎,它將SQL語句轉譯成M/R Job然後在Hadoop執行。

Hive的表其實就是HDFS的目錄,按表名把文件夾分開。如果是分區表,則分區值是子文件夾,可以直接在M/R Job裡使用這些數據。

apache Hive介紹

apache Hive介紹

2.hive的數據存儲

Hive四類數據模型:表(table),外部表(external table),分區(partition), 桶(Bucket)。

2.1.表:

與數據庫中的 Table 在概念上是類似

每一個 Table 在 Hive 中都有一個相應的目錄存儲數據。例如,一個表 test,它在 HDFS 中的路徑為:/$warehouse/test。 $warehouse是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的數據倉庫的目錄

所有的 Table 數據(不包括 External Table)都保存在這個目錄中。

刪除表時,元數據與數據都會被刪除

例:

創建數據文件inner_table.dat

創建表

hive>create table inner_table (key string);

加載數據

hive>load data local inpath '/root/inner_table.dat' into table inner_table;

查看數據

select * from inner_table

select count(*) from inner_table

刪除表 drop table inner_table

2.2.分區:

hive表中的一個分區對應表下的一個目錄,所有分區的數據都存儲在對應的目錄中。

apache Hive介紹

2.3.桶:

桶對指定列進行哈希(hash)計算時,根據哈希切分數據,每個桶對應一個文件。

apache Hive介紹

2.4.外部表:

外部表指向已經在hdfs中存在的數據,也可以創建分區。外部表和表在元數據的組織上是相同的,但是實際數據的存儲存在較大差異。

apache Hive介紹

apache Hive介紹

3.hive的元數據存儲

由於hive的元數據會不斷更新、修改和讀取。

單用戶模式: 此模式連接到一個in-memory 數據庫Derby

多用戶模式: 通過網絡連接到一個數據庫中(如:mysql)

遠程sever模式: 用戶非java客戶端訪問元數據,在服務端啟動一個metastoreserver,客戶端利用Thrift協議通過metastoreserver。

注意:Derby引擎的缺點:一次只能打開一個會話,

使用Mysql作為外置存儲引擎,多用戶同時訪問。

4.hive 的組件與體系結構

4.1.用戶接口主要有三個:CLI,JDBC/ODBC和 WebUI

CLI,即Shell命令行

JDBC/ODBC 是 Hive 的Java,與使用傳統數據庫JDBC的方式類似.

WebGUI是通過瀏覽器訪問 Hive.

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

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

4.4.Hive 的數據存儲在 HDFS 中,大部分的查詢由 MapReduce 完成(包含 * 的查詢,比如 select * from table 不會生成 MapRedcue 任務)

apache Hive介紹

5:Hive與傳統數據庫對比

apache Hive介紹

6: hive的圖形化界面

apache Hive介紹

7.hive的運行模式

Hive的運行模式即任務的執行環境

分為本地與集群兩種

我們可以通過mapred.job.tracker 來指明

設置方式:

hive > SET mapred.job.tracker=local;

8.hive的三種啟動方式

8.1、hive 命令行模式,直接輸入#/hive/bin/hive的執行程序,或者輸入 #hive --service cli

8.2、 hive web界面的 (端口號9999) 啟動方式

#hive --service hwi &

用於通過瀏覽器來訪問hive

http://yarn4:9999/hwi/

8.3、 hive thrift遠程服務 (端口號10000) 啟動方式

#hive --service hiveserver &


分享到:


相關文章: