2021年大数据Hive(二):Hive的三种安装模式和MySQL搭配使用
全網(wǎng)最詳細(xì)的Hive文章系列,強(qiáng)烈建議收藏加關(guān)注!
后面更新文章都會列出歷史文章目錄,幫助大家回顧知識重點(diǎn)。
目錄
系列歷史文章
前言
Hive的三種安裝模式和MySQL搭配使用
一、Hive的安裝方式
1、內(nèi)嵌模式
2、本地模式
3、遠(yuǎn)程模式
二、Hive的安裝
1、準(zhǔn)備工作
2、安裝mysql數(shù)據(jù)庫
3、安裝Hive
三、Hive的交互方式
第一種交互方式:bin/hive
第二種交互方式:使用sql語句或者sql腳本進(jìn)行交互
第三種交互方式:Beeline Client
四、Hive一鍵啟動腳本
1、安裝expect
2、創(chuàng)建腳本
3、修改腳本權(quán)限
4、啟動beeline
系列歷史文章
2021年大數(shù)據(jù)Hive(十二):Hive綜合案例!!!
2021年大數(shù)據(jù)Hive(十一):Hive調(diào)優(yōu)
2021年大數(shù)據(jù)Hive(十):Hive的數(shù)據(jù)存儲格式
2021年大數(shù)據(jù)Hive(九):Hive的數(shù)據(jù)壓縮???????
2021年大數(shù)據(jù)Hive(八):Hive自定義函數(shù)
2021年大數(shù)據(jù)Hive(七):Hive的開窗函數(shù)
2021年大數(shù)據(jù)Hive(六):Hive的表生成函數(shù)
2021年大數(shù)據(jù)Hive(五):Hive的內(nèi)置函數(shù)(數(shù)學(xué)、字符串、日期、條件、轉(zhuǎn)換、行轉(zhuǎn)列)
2021年大數(shù)據(jù)Hive(四):Hive查詢語法
2021年大數(shù)據(jù)Hive(三):手把手教你如何吃透Hive數(shù)據(jù)庫和表操作(學(xué)會秒變數(shù)倉大佬)
2021年大數(shù)據(jù)Hive(二):Hive的三種安裝模式和MySQL搭配使用
2021年大數(shù)據(jù)Hive(一):Hive基本概念???????
前言
2021大數(shù)據(jù)領(lǐng)域優(yōu)質(zhì)創(chuàng)作博客,帶你從入門到精通,該博客每天更新,逐漸完善大數(shù)據(jù)各個知識體系的文章,幫助大家更高效學(xué)習(xí)。
有對大數(shù)據(jù)感興趣的可以關(guān)注微信公眾號:三幫大數(shù)據(jù)
Hive的三種安裝模式和MySQL搭配使用
一、Hive的安裝方式
?hive的安裝一共有三種方式:內(nèi)嵌模式、本地模式、遠(yuǎn)程模式
元數(shù)據(jù)服務(wù)(metastore)作用是:客戶端連接metastore服務(wù),metastore再去連接MySQL數(shù)據(jù)庫來存取元數(shù)據(jù)。有了metastore服務(wù),就可以有多個客戶端同時連接,而且這些客戶端不需要知道MySQL數(shù)據(jù)庫的用戶名和密碼,只需要連接metastore 服務(wù)即可。
1、內(nèi)嵌模式
內(nèi)嵌模式使用的是內(nèi)嵌的Derby數(shù)據(jù)庫來存儲元數(shù)據(jù),也不需要額外起Metastore服務(wù)。數(shù)據(jù)庫和Metastore服務(wù)都嵌入在主Hive Server進(jìn)程中。這個是默認(rèn)的,配置簡單,但是一次只能一個客戶端連接,適用于用來實(shí)驗(yàn),不適用于生產(chǎn)環(huán)境。
解壓hive安裝包 ?bin/hive 啟動即可使用
缺點(diǎn):不同路徑啟動hive,每一個hive擁有一套自己的元數(shù)據(jù),無法共享。
2、本地模式
本地模式采用外部數(shù)據(jù)庫來存儲元數(shù)據(jù),目前支持的數(shù)據(jù)庫有:MySQL、Postgres、Oracle、MS SQL Server.在這里我們使用MySQL。
本地模式不需要單獨(dú)起metastore服務(wù),用的是跟hive在同一個進(jìn)程里的metastore服務(wù)。也就是說當(dāng)你啟動一個hive 服務(wù),里面默認(rèn)會幫我們啟動一個metastore服務(wù)。
hive根據(jù)hive.metastore.uris 參數(shù)值來判斷,如果為空,則為本地模式。
缺點(diǎn)是:每啟動一次hive服務(wù),都內(nèi)置啟動了一個metastore。
3、遠(yuǎn)程模式
遠(yuǎn)程模式下,需要單獨(dú)起metastore服務(wù),然后每個客戶端都在配置文件里配置連接到該metastore服務(wù)。遠(yuǎn)程模式的metastore服務(wù)和hive運(yùn)行在不同的進(jìn)程里。
在生產(chǎn)環(huán)境中,建議用遠(yuǎn)程模式來配置Hive Metastore。
在這種情況下,其他依賴hive的軟件都可以通過Metastore訪問hive。
遠(yuǎn)程模式下,需要配置hive.metastore.uris 參數(shù)來指定metastore服務(wù)運(yùn)行的機(jī)器ip和端口,并且需要單獨(dú)手動啟動metastore服務(wù)。
hiveserver2是Hive啟動了一個server,客戶端可以使用JDBC協(xié)議,通過IP+ Port的方式對其進(jìn)行訪問,達(dá)到并發(fā)訪問的目的。
二、Hive的安裝
我們在此處選擇第三臺機(jī)器node3作為我們hive的安裝機(jī)器,安裝方式使用遠(yuǎn)程方式。
1、準(zhǔn)備工作
1、下載hive的安裝包,這里我們選用hive的版本是2.1.0,軟件包為:apache-hive-2.1.0-bin.tar.gz
Hive下載地址:http://archive.apache.org/dist/hive/
2、下載mysql的安裝包,我們使用的mysql版本是5.7.29,軟件包為:mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
?下載地址:https://downloads.mysql.com/archives/community/?
3、將apache-hive-2.1.0-bin.tar.gz上傳到/export/software目錄
4、將mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz上傳到/export/software目錄
2、安裝mysql數(shù)據(jù)庫
在這里,我們使用mysql數(shù)據(jù)庫作為Hive的元數(shù)據(jù)存儲,所以在安裝Hive之前,必須安裝好mysql
注意!!!!!,在安裝Mysql之前,給虛擬機(jī)保存一個快照,一旦安裝失敗,可以恢復(fù)快照,重新安裝!
1、解壓mysql安裝包
#將MySQL的安裝包提前上傳到Linux的/export/software目錄
cd?/export/software
tar??-zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /export/server/
2、重命名
cd /export/server
mv?mysql-5.7.29-linux-glibc2.12-x86_64 ?mysql-5.7.29
3、添加用戶組與用戶
groupadd mysql
useradd?-r -g mysql mysql
4、修改目錄權(quán)限
chown?-R mysql:mysql /export/server/mysql-5.7.29/
5、配置mysql服務(wù)
cp?/export/server/mysql-5.7.29/support-files/mysql.server /etc/init.d/mysql
6、修改mysql配置文件
1)修改/etc/init.d/mysql文件
vim?/etc/init.d/mysql
將該文件的basedir和datadir路徑修改為以下內(nèi)容
basedir=/export/server/mysql-5.7.29
datadir=/export/server/mysql-5.7.29/data
2)修改配置文件my.cnf
修改/etc/my.cnf文件
vim?/etc/my.cnf
將/etc/my.cnf原來的內(nèi)容全部刪除,然后將以下內(nèi)容復(fù)制進(jìn)去.
[client]port=3306default-character-set=utf8[mysqld]basedir=/export/server/mysql-5.7.29datadir=/export/server/mysql-5.7.29/dataport=3306character-set-server=utf8default_storage_engine=InnoDB
7、初始化mysql
/export/server/mysql-5.7.29/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/export/server/mysql-5.7.29 --datadir=/export/server/mysql-5.7.29/data
執(zhí)行該命令之后,會生成一個mysql的臨時密碼,這個密碼后邊要使用。
8、啟動服務(wù)
service?mysql start
9、登錄mysql
使用第7步生成的臨時密碼
/export/server/mysql-5.7.29/bin/mysql -uroot -p臨時密碼
請注意,如果回車之后臨時密碼報錯,則可以執(zhí)行以下指令,然后手動輸入臨時密碼:
/export/server/mysql-5.7.29/bin/mysql -uroot -p
10、修改密碼
注意這條命令是在登錄mysql之后執(zhí)行
set?password=password('123456');
11、開啟遠(yuǎn)程訪問權(quán)限
注意這條命令是在登錄mysql之后執(zhí)行
GRANT ALL PRIVILEGES ON *.*?TO 'root'@'%'?IDENTIFIED BY '123456';?flush privileges;
12、修改環(huán)境變量
退出mysql,然后修改Linux的/etc/profile文件
vim?/etc/profile
在該文件末尾最后添加以下內(nèi)容
export?MYSQL_HOME=/export/server/mysql-5.7.29
export?PATH=$PATH:$MYSQL_HOME/bin
保存修改之后,讓該文件的修改生效
source /etc/profile
13、將mysql設(shè)置為開機(jī)啟動
chkconfig --add mysql ?#mysql服務(wù)到自啟服務(wù)
chkconfig mysql on #設(shè)置自啟
3、安裝Hive
1、解壓Hive安裝包并重命名
cd /export/software
tar -zxvf apache-hive-2.1.0-bin.tar.gz ?-C /export/server
cd /export/server
mv apache-hive-2.1.0-bin hive-2.1.0
2、修改hive的配置文件
hive-env.sh ?
添加我們的hadoop的環(huán)境變量
cd??/export/server/hive-2.1.0/conf
cp?hive-env.sh.template hive-env.sh
vim?hive-env.sh
修改內(nèi)容如下:
HADOOP_HOME=/export/server/hadoop-2.7.5
export?HIVE_CONF_DIR=/export/server/hive-2.1.0/conf
3、修改hive-site.xml
cd??/export/server/hive-2.1.0/conf
vim?hive-site.xml
在該文件中添加以下內(nèi)容
<?xml?version="1.0"?encoding="UTF-8"?standalone="no"?><?xml-stylesheet?type="text/xsl"?href="configuration.xsl"?><configuration><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://node3:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>hive.metastore.schema.verification</name><value>false</value></property><property><name>datanucleus.schema.autoCreateAll</name><value>true</value></property><property><name>hive.server2.thrift.bind.host</name><value>node3</value></property></configuration>
4、上傳mysql的lib驅(qū)動包
將mysql的lib驅(qū)動包上傳到hive的lib目錄下
cd?/export/server/hive-2.1.0/lib
將mysql-connector-java-5.1.41-bin.jar?上傳到這個目錄下
5、拷貝相關(guān)jar包
將hive-2.1.0/jdbc/目錄下的hive-jdbc-2.1.0-standalone.jar 拷貝到hive-2.1.0/lib/目錄
cp /export/server/hive-2.1.0/jdbc/hive-jdbc-2.1.0-standalone.jar /export/server/hive-2.1.0/lib/
6、配置hive的環(huán)境變量
node03服務(wù)器執(zhí)行以下命令配置hive的環(huán)境變量
vim?/etc/profile
添加以下內(nèi)容:
export?HIVE_HOME=/export/server/hive-2.1.0
export?PATH=:$HIVE_HOME/bin:$PATH
三、Hive的交互方式
第一種交互方式:bin/hive
cd?/export/server/hive-2.1.0/#初始化元數(shù)據(jù)bin/schematool -dbType mysql -initSchemabin/hive
創(chuàng)建一個數(shù)據(jù)庫
create?database ?mytest;
show databases;
第二種交互方式:使用sql語句或者sql腳本進(jìn)行交互
不進(jìn)入hive的客戶端直接執(zhí)行hive的hql語句
cd /export/server/hive-2.1.0/
bin/hive -e "create database mytest2"
或者我們可以將我們的hql語句寫成一個sql腳本然后執(zhí)行
cd /export/server
vim ?hive.sql
腳本內(nèi)容如下:
create?database mytest3;
use?mytest3;
create?table?stu(id int,name string);
通過hive -f ??來執(zhí)行我們的sql腳本
bin/hive -f /export/server/hive.sql
第三種交互方式:Beeline Client
hive經(jīng)過發(fā)展,推出了第二代客戶端beeline,但是beeline客戶端不是直接訪問metastore服務(wù)的,而是需要單獨(dú)啟動hiveserver2服務(wù)。
1)在node1的/export/server/hadoop-2.7.5/etc/hadoop目錄下,修改core-site.xml,在該文件中添加以下配置,實(shí)現(xiàn)用戶代理:
<property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>
將修改好的core-site.xml文件分發(fā)到node2和node3,然后重啟Hadoop(stop-all.sh start-all.sh)
2)在hive運(yùn)行的服務(wù)器上,首先啟動metastore服務(wù),然后啟動hiveserver2服務(wù)。
nohup /export/server/hive-2.1.0/bin/hive --service metastore &
nohup /export/server/hive-2.1.0/bin/hive --service hiveserver2 &
nohup 和 & 表示后臺啟動
3)在node3上使用beeline客戶端進(jìn)行連接訪問。
/export/server/hive-2.1.0/bin/beeline
根據(jù)提醒進(jìn)行以下操作:
[root@node3 ~]# /export/server/hive-2.1.0/bin/beeline
which: no hbase in (:/export/server/hive-2.1.0/bin::/export/server/hadoop-2.7.5/bin:/export/data/hadoop-2.7.5/sbin::/export/server/jdk1.8.0_241/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/export/server/mysql-5.7.29/bin:/root/bin)
Beeline version 2.1.0 by Apache Hive
beeline>?!connect jdbc:hive2://node3:10000
Connecting to jdbc:hive2://node3:10000
Enter username for jdbc:hive2://node3:10000:?root
Enter password for jdbc:hive2://node3:10000:123456
連接成功之后,出現(xiàn)以下內(nèi)容,可以在提示符后邊輸入hive sql命令
四、Hive一鍵啟動腳本
這里,我們寫一個expect腳本,可以一鍵啟動beenline,并登錄到hive。expect是建立在tcl基礎(chǔ)上的一個自動化交互套件, 在一些需要交互輸入指令的場景下, 可通過腳本設(shè)置自動進(jìn)行交互通信。
1、安裝expect
yum ?-y?install expect
???????2、創(chuàng)建腳本
cd?/export/server/?hive-2.1.0
vim??beenline.exp
添加以下內(nèi)容:
#!/bin/expect
spawn beeline
set?timeout 5
expect "beeline>"
send "!connect jdbc:hive2://node3:10000\r"
expect "Enter username for jdbc:hive2://node3:10000:"
send "root\r"
expect "Enter password for jdbc:hive2://node3:10000:"
send "123456\r"
interact
???????3、修改腳本權(quán)限
chmod?777?beenline.exp
???????4、啟動beeline
expect beenline.exp
- 📢博客主頁:https://lansonli.blog.csdn.net
- 📢歡迎點(diǎn)贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創(chuàng),首發(fā)于 CSDN博客🙉
- 📢大數(shù)據(jù)系列文章會每天更新,停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學(xué)習(xí),全力奔赴更美好的生活?
總結(jié)
以上是生活随笔為你收集整理的2021年大数据Hive(二):Hive的三种安装模式和MySQL搭配使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Hive(一):
- 下一篇: 2021年大数据Hive(三):手把手教