離線數(shù)據(jù)分析平臺實(shí)戰(zhàn)——110Hive介紹和Hive環(huán)境搭建
Hive介紹
Hive是構(gòu)建在Hadoop之上的數(shù)據(jù)倉庫平臺腋腮,設(shè)計(jì)目標(biāo)就是將hadoop上的數(shù)據(jù)操作同SQL結(jié)合,讓熟悉SQL編程的開發(fā)人員能夠輕松的向Hadoop平臺上轉(zhuǎn)移糠惫。
Hive可以在HDFS上構(gòu)建數(shù)據(jù)倉庫存儲結(jié)構(gòu)化數(shù)據(jù)修肠,這些數(shù)據(jù)來源就是hdfs上朦乏,hive提供了一個類似sql的查詢語言HiveQL來進(jìn)行查詢顾翼、變換數(shù)據(jù)等操作芋忿。
當(dāng)然HiveQL語句的底層是轉(zhuǎn)換為相應(yīng)的mapreduce代碼進(jìn)行執(zhí)行的。
Hive組成
Hive包含用戶接口蒋荚、元數(shù)據(jù)庫戳稽、解析器和數(shù)據(jù)倉庫等組件組成,其中用戶接口包含shell客戶端期升、JDBC惊奇、ODBC、Web接口等播赁。
元數(shù)據(jù)庫主要是指定義在hive中的表結(jié)構(gòu)信息颂郎,一般保存到關(guān)系型數(shù)據(jù)庫中,默認(rèn)是derby容为,一般使用mysql進(jìn)行保存乓序。
解析器主要功能是將HQL語句轉(zhuǎn)換為mapreduce代碼。
數(shù)據(jù)倉庫就是由hdfs組成的數(shù)據(jù)存儲容器坎背。
Hive架構(gòu)
image.png
Hive安裝
Hive根據(jù)metastore的存儲位置不同替劈,分為三種安裝模式:
內(nèi)嵌模式,本地模式得滤,遠(yuǎn)程模式陨献。
內(nèi)嵌模式就是使用derdy存儲元數(shù)據(jù);
本地模式是將hvie.metastore.local設(shè)置為true懂更,就是說metastore和hive客戶端安裝在同一臺機(jī)器上眨业;
遠(yuǎn)程模式指的是我們明確指定metastore安裝的機(jī)器位置,而且可以指定多個膜蛔,需要給定參數(shù)hive.metastore.uris并且hive.metastore.local必須設(shè)置為false坛猪。
Hive遠(yuǎn)程模式安裝脖阵,使用mysql進(jìn)行元數(shù)據(jù)的存儲皂股。
安裝步驟:
1. 安裝mysql數(shù)據(jù)庫。
2. hive本地模式安裝命黔。
Hive安裝--Mysql安裝
安裝步驟:
使用root用戶安裝mysql呜呐。
修改/etc/my.cnf文件中的配置信息。
啟動mysql
設(shè)置root用戶密碼
root用戶登錄
創(chuàng)建hive元數(shù)據(jù)的mysql用戶并授權(quán)悍募。
使用新用戶登錄蘑辑,然后創(chuàng)建數(shù)據(jù)庫,并修改數(shù)據(jù)庫的連接方式坠宴。
Hive安裝--Hive安裝
安裝步驟:
下載hive洋魂,下載地址:http://archive.cloudera.com/cdh5/cdh/5/hive-0.13.1-cdh5.3.6.tar.gz
解壓下載的壓縮包。
配置環(huán)境變量hive-site.xml。
將mysql-connector-java-5.1.31.jar移動到hive的lib文件夾下副砍。
將bin目錄添加到$PATH環(huán)境變量中去衔肢。
啟動metastore服務(wù)。hive --service metastore &.
進(jìn)入hive的shell客戶端豁翎,驗(yàn)證是否安裝成功角骤。
Hive Web界面安裝
Hive提供了一個Web的操作客戶端,一般我們通過該頁面查看hive的信息心剥,配置信息包括:
hive.hwi.listen.host指定監(jiān)聽ip(默認(rèn)0.0.0.0)邦尊,
hive.hwi.listen.port監(jiān)聽端口(默認(rèn)9999),
hive.hwi.war.file=xxx优烧。
另外需要將java的tool.jar文件移動到hive的lib文件夾中蝉揍。
啟動命令為:
hive --service hwi &
{ 如下如hive界面安裝步驟參考
1)默認(rèn)端口號9999
2)啟動方式:#hive --service hwi?
注意,該方式啟動前需要下載hive的源代碼畦娄,并用jar命令打包相關(guān)war包疑苫,放到hive的lib目錄下,更改hive-site.xml文件的配置纷责,還需要將jdk的bin中的tools.jar放到hive的lib目錄下捍掺。
3)通過瀏覽器來訪問:http://<IP地址>:9999/hwi/
4)web界面方式只能做查詢操作
}
一、 安裝mysql ? ?
1. 使用root用戶: su root? ??
2. 安裝? ? ? ??
yum install mysql? ? ? ??
yum install mysql-server? ? ? ?
?yum install mysql-devel(可選)? ??
3. 修改配置信息再膳,
添加: vim /etc/my.cnf? ? ? ?
?[mysql]? ? ? ? default-character-set=utf8? ? ? ??
[mysqld]? ? ? ? character-set-server=utf8? ? ? ??
lower_case_table_names=1? ??
4. 啟動mysql:
service mysqld restart/stop/start? ??
5. 配置超級用戶名和密碼挺勿,?
mysqladmin -u root password 123456? ?
6. root用戶登錄mysql -u root -p 123456 ??
7. 創(chuàng)建mysql用戶:create user'hive'identified by'hive';? ??
8. 授權(quán):grant all privileges on *.* to'hive'@'%'with grant option? ??
9. 重啟一下這個mysql服務(wù)。? ? 1
0. 使用hive用戶創(chuàng)建數(shù)據(jù)庫并修改連接信息喂柒。? ? ??
?create database hive;? ? ?
?alter database hive charactersetlatin1;? ? ? ? ? ? ??
二不瓶、 安裝hive? ?
?1. 下載hive:http://archive.cloudera.com/cdh5/cdh/5/hive-0.13.1-cdh5.3.6.tar.gz? ? 2. hive的幫助文檔位置:https://cwiki.apache.org/confluence/display/Hive/LanguageManual,? ? ? ??
hive官網(wǎng):http://hive.apache.org? ??
3. 參考hive-site.xml文件? ??
4. 將bin目錄添加到path目錄中灾杰,? ? ? ??
vim ~/.bash_profile
export HIVE_HOME=/home/hadoop/bigdater/hive-0.13.1-cdh5.3.6/
expor PATH=$PATH:$HIVE_HOME/bin
source~/.bash_profile? ??
5. 移動mysql驅(qū)動jar到hive的lib文件夾下蚊丐。? ??
6. 啟動metastore服務(wù)(啟動hdfs+yarn服務(wù))? ? ? ??
hive --service metastore &? ??
7. 進(jìn)入hive的客戶端? ? ? ??
hive
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
? <property>
? ? <name>hive.metastore.uris</name>
? ? <value>thrift://hh:9083</value>
? </property>
? <property>
? ? <name>hive.metastore.warehouse.dir</name>
? ? <value>/hive</value>
? </property>
? <property>
? ? <name>javax.jdo.option.ConnectionURL</name>
? ? <value>jdbc:mysql://hh:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&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>hive</value>
? </property>
? <property>
? ? <name>javax.jdo.option.ConnectionPassword</name>
? ? <value>hive</value>
? </property>
</configuration>