全網最詳細的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的三種安裝模式和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=3306
default-character-set=utf8
[mysqld]
basedir=/export/server/mysql-5.7.29
datadir=/export/server/mysql-5.7.29/data
port=3306
character-set-server=utf8
default_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 -initSchema
bin/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://www.uj5u.com/qita/286925.html
標籤:其他
