2021年大数据Hive(二):Hive的三种安装模式和MySQL搭配使用
全網最詳細的Hive文章系列,強烈建議收藏加關注!
后面更新文章都會列出歷史文章目錄,幫助大家回顧知識重點。
目錄
系列歷史文章
前言
Hive的三種安裝模式和MySQL搭配使用
一、Hive的安裝方式
1、內嵌模式
2、本地模式
3、遠程模式
二、Hive的安裝
1、準備工作
2、安裝mysql數據庫
3、安裝Hive
三、Hive的交互方式
第一種交互方式:bin/hive
第二種交互方式:使用sql語句或者sql腳本進行交互
第三種交互方式:Beeline Client
四、Hive一鍵啟動腳本
1、安裝expect
2、創建腳本
3、修改腳本權限
4、啟動beeline
系列歷史文章
2021年大數據Hive(十二):Hive綜合案例!!!
2021年大數據Hive(十一):Hive調優
2021年大數據Hive(十):Hive的數據存儲格式
2021年大數據Hive(九):Hive的數據壓縮???????
2021年大數據Hive(八):Hive自定義函數
2021年大數據Hive(七):Hive的開窗函數
2021年大數據Hive(六):Hive的表生成函數
2021年大數據Hive(五):Hive的內置函數(數學、字符串、日期、條件、轉換、行轉列)
2021年大數據Hive(四):Hive查詢語法
2021年大數據Hive(三):手把手教你如何吃透Hive數據庫和表操作(學會秒變數倉大佬)
2021年大數據Hive(二):Hive的三種安裝模式和MySQL搭配使用
2021年大數據Hive(一):Hive基本概念???????
前言
2021大數據領域優質創作博客,帶你從入門到精通,該博客每天更新,逐漸完善大數據各個知識體系的文章,幫助大家更高效學習。
有對大數據感興趣的可以關注微信公眾號:三幫大數據
Hive的三種安裝模式和MySQL搭配使用
一、Hive的安裝方式
?hive的安裝一共有三種方式:內嵌模式、本地模式、遠程模式
元數據服務(metastore)作用是:客戶端連接metastore服務,metastore再去連接MySQL數據庫來存取元數據。有了metastore服務,就可以有多個客戶端同時連接,而且這些客戶端不需要知道MySQL數據庫的用戶名和密碼,只需要連接metastore 服務即可。
1、內嵌模式
內嵌模式使用的是內嵌的Derby數據庫來存儲元數據,也不需要額外起Metastore服務。數據庫和Metastore服務都嵌入在主Hive Server進程中。這個是默認的,配置簡單,但是一次只能一個客戶端連接,適用于用來實驗,不適用于生產環境。
解壓hive安裝包 ?bin/hive 啟動即可使用
缺點:不同路徑啟動hive,每一個hive擁有一套自己的元數據,無法共享。
2、本地模式
本地模式采用外部數據庫來存儲元數據,目前支持的數據庫有:MySQL、Postgres、Oracle、MS SQL Server.在這里我們使用MySQL。
本地模式不需要單獨起metastore服務,用的是跟hive在同一個進程里的metastore服務。也就是說當你啟動一個hive 服務,里面默認會幫我們啟動一個metastore服務。
hive根據hive.metastore.uris 參數值來判斷,如果為空,則為本地模式。
缺點是:每啟動一次hive服務,都內置啟動了一個metastore。
3、遠程模式
遠程模式下,需要單獨起metastore服務,然后每個客戶端都在配置文件里配置連接到該metastore服務。遠程模式的metastore服務和hive運行在不同的進程里。
在生產環境中,建議用遠程模式來配置Hive Metastore。
在這種情況下,其他依賴hive的軟件都可以通過Metastore訪問hive。
遠程模式下,需要配置hive.metastore.uris 參數來指定metastore服務運行的機器ip和端口,并且需要單獨手動啟動metastore服務。
hiveserver2是Hive啟動了一個server,客戶端可以使用JDBC協議,通過IP+ Port的方式對其進行訪問,達到并發訪問的目的。
二、Hive的安裝
我們在此處選擇第三臺機器node3作為我們hive的安裝機器,安裝方式使用遠程方式。
1、準備工作
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數據庫
在這里,我們使用mysql數據庫作為Hive的元數據存儲,所以在安裝Hive之前,必須安裝好mysql
注意!!!!!,在安裝Mysql之前,給虛擬機保存一個快照,一旦安裝失敗,可以恢復快照,重新安裝!
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、修改目錄權限
chown?-R mysql:mysql /export/server/mysql-5.7.29/
5、配置mysql服務
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路徑修改為以下內容
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原來的內容全部刪除,然后將以下內容復制進去.
[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
執行該命令之后,會生成一個mysql的臨時密碼,這個密碼后邊要使用。
8、啟動服務
service?mysql start
9、登錄mysql
使用第7步生成的臨時密碼
/export/server/mysql-5.7.29/bin/mysql -uroot -p臨時密碼
請注意,如果回車之后臨時密碼報錯,則可以執行以下指令,然后手動輸入臨時密碼:
/export/server/mysql-5.7.29/bin/mysql -uroot -p
10、修改密碼
注意這條命令是在登錄mysql之后執行
set?password=password('123456');
11、開啟遠程訪問權限
注意這條命令是在登錄mysql之后執行
GRANT ALL PRIVILEGES ON *.*?TO 'root'@'%'?IDENTIFIED BY '123456';?flush privileges;
12、修改環境變量
退出mysql,然后修改Linux的/etc/profile文件
vim?/etc/profile
在該文件末尾最后添加以下內容
export?MYSQL_HOME=/export/server/mysql-5.7.29
export?PATH=$PATH:$MYSQL_HOME/bin
保存修改之后,讓該文件的修改生效
source /etc/profile
13、將mysql設置為開機啟動
chkconfig --add mysql ?#mysql服務到自啟服務
chkconfig mysql on #設置自啟
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的環境變量
cd??/export/server/hive-2.1.0/conf
cp?hive-env.sh.template hive-env.sh
vim?hive-env.sh
修改內容如下:
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
在該文件中添加以下內容
<?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驅動包
將mysql的lib驅動包上傳到hive的lib目錄下
cd?/export/server/hive-2.1.0/lib
將mysql-connector-java-5.1.41-bin.jar?上傳到這個目錄下
5、拷貝相關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的環境變量
node03服務器執行以下命令配置hive的環境變量
vim?/etc/profile
添加以下內容:
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/#初始化元數據bin/schematool -dbType mysql -initSchemabin/hive
創建一個數據庫
create?database ?mytest;
show databases;
第二種交互方式:使用sql語句或者sql腳本進行交互
不進入hive的客戶端直接執行hive的hql語句
cd /export/server/hive-2.1.0/
bin/hive -e "create database mytest2"
或者我們可以將我們的hql語句寫成一個sql腳本然后執行
cd /export/server
vim ?hive.sql
腳本內容如下:
create?database mytest3;
use?mytest3;
create?table?stu(id int,name string);
通過hive -f ??來執行我們的sql腳本
bin/hive -f /export/server/hive.sql
第三種交互方式:Beeline Client
hive經過發展,推出了第二代客戶端beeline,但是beeline客戶端不是直接訪問metastore服務的,而是需要單獨啟動hiveserver2服務。
1)在node1的/export/server/hadoop-2.7.5/etc/hadoop目錄下,修改core-site.xml,在該文件中添加以下配置,實現用戶代理:
<property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>
將修改好的core-site.xml文件分發到node2和node3,然后重啟Hadoop(stop-all.sh start-all.sh)
2)在hive運行的服務器上,首先啟動metastore服務,然后啟動hiveserver2服務。
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客戶端進行連接訪問。
/export/server/hive-2.1.0/bin/beeline
根據提醒進行以下操作:
[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
連接成功之后,出現以下內容,可以在提示符后邊輸入hive sql命令
四、Hive一鍵啟動腳本
這里,我們寫一個expect腳本,可以一鍵啟動beenline,并登錄到hive。expect是建立在tcl基礎上的一個自動化交互套件, 在一些需要交互輸入指令的場景下, 可通過腳本設置自動進行交互通信。
1、安裝expect
yum ?-y?install expect
???????2、創建腳本
cd?/export/server/?hive-2.1.0
vim??beenline.exp
添加以下內容:
#!/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、修改腳本權限
chmod?777?beenline.exp
???????4、啟動beeline
expect beenline.exp
- 📢博客主頁:https://lansonli.blog.csdn.net
- 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創,首發于 CSDN博客🙉
- 📢大數據系列文章會每天更新,停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?
總結
以上是生活随笔為你收集整理的2021年大数据Hive(二):Hive的三种安装模式和MySQL搭配使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Hive(一):
- 下一篇: 2021年大数据Hive(三):手把手教