一、簡介
Hive是基於hadoop的一個數據倉庫工具,有助於查詢和管理分布式存儲系統中的數據集,非常適合數據倉庫的統計分析
Hive 不適合用於連機事物處理、也不提供實時查詢,比較適合在大量不可變數據的批處理作業。
二、下載與安裝
1、下載hive壓縮包,並復制到centos系統的/opt/module目錄下
2、解壓文件:tar -zxvf apache-hive-1.0.1-bin.tar.gz 執行重命名文件夾為 hive
3、添加hive-1.0.1到環境變量中,本文前提是已經配置好了hadoop的運行環境,運行環境為hadoop2.2
vi /etc/profile 插入內容 export HIVE_HOME=/opt/modules/hive export PATH=$PATH:$HIVE_HOME
4、配置hive-default.xml和hive-site.xml文件
進入到/opt/modules/hive/conf,將hive-default.xml.template 復制為hive-default.xml和hive-site.xml文件,修改hive-env.xml文件的權限
chmod u+x hive-env.sh
5、在shell命令行中,輸入:hive 則會進入到hive的shell命令窗口
(在配置的過程中,遇到了很多的問題,不過根據log日志,可以一步一步的解決問題)
三、架構
hive的架構可以分為四個部分
- 用戶接口
- 主要有CLI、Client和WUI,CLI啟動的時候,會同時啟動一個hive的副本
- 元數據存儲
- hive中的元數據是存儲在RDBMS中的,如:MySQL,hive的元數據包括表的名字、表的列、表的屬性、表的數據所在的目錄
- 在hive中,每個數據庫對於與HDFS文件系統的一個目錄,在數據庫中創建的表,則在相應的數據庫目錄下,為數據庫目錄的子目錄。
- 解釋器、編譯器、優化器
- 使用HQL語句查詢,需要從詞法分析、語法分析、編譯、優化以及查詢計划的生成,生成的查詢信息存儲在HDFS中,然后由MapReduce調用執行
- 數據存儲
- hive的數據存儲在HDFS中的,大部分的查詢都被解釋為MapReduce任務,只有少部分直接讀取文件
架構圖如下所示。
si
四、存儲元數據到MySQL數據庫中
a 安裝MySQL數據庫
yum install -y mysql-server mysql mysql-deve
b、重啟mysql服務
service mysqld restart
c、登陸MySQL,並授予權限
mysql -u root -p ***
分配權限:grant all privileges on *.* to 'root'@'hadoop-yarn' identified by 'root123';
刷新權限:flush privileges
d、創建hive專用的元數據庫:“hive”
create database hive;
e、在Hive的conf目錄下的hive-site.xml文件添加以下配置
<property> <name>hive.metastore.local</name> <value>true</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop-yarn:3306/hive?characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root123</value> </property>
f、將mysql的驅動包復制到hive目錄的lib目錄下
g、啟動hive命令,如下圖所示
h、進入MySQL數據庫
執行命令:use hive
show tables 如圖所示
到此,hive的環境搭建結束,元數據metastore存儲在MySQL數據庫中。