p48、51、52
https://www.bilibili.com/video/BV1WY4y197g7/?p=48
思考
Hive是分布式運行的框架還是單機運行的?
Hive是單機工具,只需要部署在一臺服務(wù)器即可。
Hive雖然是單機的,但是它可以提交分布式運行的MapReduce程序運行。
規(guī)劃
我們知道Hive是單機工具后,就需要準備一臺服務(wù)器供Hive使用即可。
同時Hive需要使用元數(shù)據(jù)服務(wù),即需要提供一個關(guān)系型數(shù)據(jù)庫,我們也選擇一臺服務(wù)器安裝關(guān)系型數(shù)據(jù)庫即可。
所以:
服務(wù) | 機器 |
---|---|
Hive本體 | 部署在node1 |
元數(shù)據(jù)服務(wù)所需的關(guān)系型數(shù)據(jù)庫(課程選擇最為流行的MySQL) | 部署在node1 |
為了簡單起見,都安裝到node1服務(wù)器上。
安裝MySQL數(shù)據(jù)庫
我們在node1節(jié)點使用yum在線安裝MySQL5.7版本。
在root用戶下執(zhí)行
更新密鑰
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
安裝Mysql yum庫
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
yum安裝Mysql
yum -y install mysql-community-server
啟動Mysql設(shè)置開機啟動
systemctl start mysqld
systemctl enable mysqld
檢查Mysql服務(wù)狀態(tài)
systemctl status mysqld
第一次啟動mysql,會在日志文件中生成root用戶的一個隨機密碼,使用下面命令查看該密碼
grep 'temporary password' /var/log/mysqld.log
修改root用戶密碼
進入mysql
mysql -uroot -p
然后輸入密碼,回車。
如果你想設(shè)置簡單密碼,需要降低Mysql的密碼安全級別
密碼安全級別低
set global validate_password_policy=LOW;
密碼長度最低4位即可
set global validate_password_length=4;
然后就可以用簡單密碼了(課程中使用簡單密碼,為了方便,生產(chǎn)中不要這樣)
修改root本機登錄密碼為123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
/usr/bin/mysqladmin -u root password ‘root’
修改遠程登錄密碼,打開root用戶從任意地方的主機遠程登錄的權(quán)限
grant all privileges on *.* to root@"%" identified by '123456' with grant option;
刷新權(quán)限
flush privileges;
ctrl+D退出mysql。
重新進入mysql驗證密碼是否修改完成。
mysql -uroot -p
配置Hadoop
Hive的運行依賴于Hadoop(HDFS、MapReduce、YARN都依賴)
同時涉及到HDFS文件系統(tǒng)的訪問,所以需要配置Hadoop的代理用戶
即設(shè)置hadoop用戶允許代理(模擬)其它用戶
切換到hadoop用戶
su - hadoop
cd /export/server/hadoop/etc/hadoop/
vim core-site.xml
添加如下內(nèi)容在Hadoop的core-site.xml的<configuration></configuration>
之間,并分發(fā)到其它節(jié)點,且重啟HDFS集群。
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
下載解壓Hive
下載Hive安裝包:
http://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
將下載好的文件拖拽上傳
解壓到node1服務(wù)器的:/export/server/內(nèi)
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /export/server/
建立軟鏈接
ln -s /export/server/apache-hive-3.1.3-bin /export/server/hive
提供MySQL Driver包
下載MySQL驅(qū)動包:
https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.34/mysql-connector-java-5.1.34.jar
將下載好的驅(qū)動jar包,放入:Hive安裝文件夾的lib目錄內(nèi)
mv mysql-connector-java-5.1.34.jar /export/server/apache-hive-3.1.3-bin/lib/
配置Hive
在Hive的conf目錄內(nèi),新建hive-env.sh文件,填入以下環(huán)境變量內(nèi)容:
cd /export/server/hive/conf
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop
export HIVE_CONF_DIR=/export/server/hive/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib
在Hive的conf目錄內(nèi),新建hive-site.xml文件,填入以下內(nèi)容:
vim hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true&useSSL=false&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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
初始化元數(shù)據(jù)庫
支持,Hive的配置已經(jīng)完成,現(xiàn)在在啟動Hive前,需要先初始化Hive所需的元數(shù)據(jù)庫。
在MySQL中新建數(shù)據(jù)庫:hive
mysql -uroot -p
show databases;
CREATE DATABASE hive CHARSET UTF8;
show databases;
退出mysql
exit
執(zhí)行元數(shù)據(jù)庫初始化命令:
cd /export/server/hive/bin
./schematool -initSchema -dbType mysql -verbos
初始化成功后,會在MySQL的hive庫中新建74張元數(shù)據(jù)管理的表。
mysql -uroot -p
show databases;
use hive
show tables;
退出mysql
exit
啟動Hive(使用Hadoop用戶)
修改文件權(quán)限
chown -R hadoop:hadoop apache-hive-3.1.3-bin hive
- 確保Hive文件夾所屬為hadoop用戶
- 創(chuàng)建一個hive的日志文件夾:
su - hadoop
mkdir /export/server/hive/logs
cd /export/server/hive
- 啟動元數(shù)據(jù)管理服務(wù)(必須啟動,否則無法工作)
前臺啟動:
bin/hive --service metastore
后臺啟動:
nohup bin/hive --service metastore >> logs/metastore.log 2>&1 &
查看日志
tail -f metastore.log
- 啟動客戶端,二選一(當前先選擇Hive Shell方式)
確保metastore、hdfs和yarn都已經(jīng)啟動
Hive Shell方式(可以直接寫SQL):
bin/hive
Hive ThriftServer方式(不可直接寫SQL,需要外部客戶端鏈接使用):
bin/hive --service hiveserver2
Hive體驗
首先,確保啟動了Metastore服務(wù)、hdfs和yarn集群。
start-dfs.sh
start-yarn.sh
mapred --daemon start historyserver
nohup /export/server/hive/bin/hive --service metastore >> /export/server/hive/logs/metastore.log 2>&1 &
可以執(zhí)行:
cd /export/server/hive
bin/hive
進入到Hive Shell環(huán)境中,可以直接執(zhí)行SQL語句。
創(chuàng)建表
CREATE TABLE test(id INT, name STRING, gender STRING);
show tables;
插入數(shù)據(jù)
insert into test values(1,'mm','nan');
INSERT INTO test VALUES(2,'王力紅','男'),(3,'李華','女');
會執(zhí)行得有點慢。。。
查詢數(shù)據(jù)
SELECT gender, COUNT(*) AS cnt FROM test GROUP BY gender;
驗證SQL語句啟動的MapReduce程序
打開YARN的WEB UI頁面查看任務(wù)情況:http://node1:8088
ctrl+c退出hive。
驗證Hive的數(shù)據(jù)存儲
Hive的數(shù)據(jù)存儲在HDFS的:/user/hive/warehouse中
HiveServer2
在啟動Hive的時候,除了必備的Metastore服務(wù)外,有2種方式使用Hive:
- 方式1:
bin/hive
即Hive的Shell客戶端,可以直接寫SQL
- 方式2:
bin/hive --service hiveserver2
后臺執(zhí)行腳本:
nohup bin/hive --service hiveserver2 >> logs/hiveserver2.log 2>&1 &
bin/hive --service metastore,啟動的是元數(shù)據(jù)管理服務(wù)
bin/hive --service hiveserver2,啟動的是HiveServer2服務(wù)
HiveServer2是Hive內(nèi)置的一個ThriftServer服務(wù),提供Thrift端口供其它客戶端鏈接
可以連接ThriftServer的客戶端有:
- Hive內(nèi)置的 beeline客戶端工具(命令行工具)
- 第三方的圖形化SQL工具,如DataGrip、DBeaver、Navicat等
HiveServer2服務(wù)
Hive的客戶端體系如下
啟動
在hive安裝的服務(wù)器上,首先啟動metastore服務(wù),然后啟動hiveserver2服務(wù)。
nohup bin/hive --service metastore >> logs/metastore.log 2>&1 &
nohup bin/hive --service hiveserver2 >> logs/hiveserver2.log 2>&1 &
ps -ef|grep 32094
ps -ef|grep 32429
hiveserver2監(jiān)聽了10000端口,金對外提供的thrift端口,默認10000
netstat -anp|grep 10000
Beeline
在node1上使用beeline客戶端進行連接訪問。需要注意hiveserver2服務(wù)啟動之后需要稍等一會才可以對外提供服務(wù)。
Beeline是JDBC的客戶端,通過JDBC協(xié)議和Hiveserver2服務(wù)進行通信,協(xié)議的地址是:jdbc:hive2://node1:10000
/export/server/hive/bin/beeline
! connect jdbc:hive2://node1:10000
輸入用戶名和密碼文章來源:http://www.zghlxwxcb.cn/news/detail-630528.html
show databases;
文章來源地址http://www.zghlxwxcb.cn/news/detail-630528.html
到了這里,關(guān)于黑馬大數(shù)據(jù)學(xué)習(xí)筆記4-Hive部署和基本操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!