一.簡介
Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
二.架構
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任務)。
三.HQL解釋過程
四.Hive搭建模式
1.local模式
此模式連接到一個In-memory的數據庫Derby,一般用於Unit Test。
2.單用戶模式
通過網絡連接到一個數據庫中,是最經常使用到的模式
3.遠程服務器模式/多用戶模式
用於非Java客戶端訪問元數據庫,在服務器端啟動MetaStoreServer,客戶端利用Thrift協議通過MetaStoreServer訪問元數據庫
五.Hive集群搭建
1.配置hive元數據
2.配置臨時目錄等相關信息
3.配置數據庫信息
4.上傳mysql連接工具包
5.創建hive-env.sh【從hive-env.sh.template重命名】
六.啟動及測試
1.mysql數據庫初始化
執行成功之后可以看見Hive數據倉庫以及生成metastore元數據表
2.啟動Hive
3.操作Hive
4.創建庫,表及導入數據
建庫zhen
建表zhen_user
load數據
查看