1. 程式人生 > 其它 >Hive部署

Hive部署

Hive 安裝地址

Hive 安裝部署

使用FinalShell 將 Hive 匯入到 opt 目錄下面的 software 資料夾下面

在 Linux 系統下的 opt 目錄中檢視軟體包是否匯入成功

ll /opt/software/
總用量 143360
-rw-rw-r--. 1 owenxuan owenxuan 146799982 12月 22 11:16 apache-hive-3.1.2-bin.tar.gz

解壓 Hive 到/opt/module 目錄下

cd /opt/software/
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C ../module/

將Hive 更名

cd ../module/
mv apache-hive-3.1.2-src/ hive

配置 Hive 環境變數

新建/etc/profile.d/my_env.sh 檔案

sudo vim /etc/profile.d/my_env.sh

新增如下內容

#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

儲存後退出

source 一下/etc/profile 檔案,讓新的環境變數 PATH 生效

source /etc/profile

測試 Hive是否安裝成功

hive

如果能看到以下結果,則代表 Hive 安裝成功。

hive> 

解決日誌 Jar 包衝突

rm $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar 

初始化元資料庫

bin/schematool -dbType derby -initSchema

啟動並使用 Hive

啟動 Hive

bin/hive

使用 Hive

hive> show databases; 
hive> show tables; 
hive> create table test(id int); 
hive> insert into test values(1); 
hive> select * from test;

新建一個終端,監控日誌檔案

tail -f /tmp/owenxuan/hive.log

MySQL 安裝

檢查當前系統是否安裝過 MySQL

rpm -qa|grep mariadb
//如果存在通過如下命令解除安裝
sudo rpm -e --nodeps mariadb-libs

將 MySQL 安裝包拷貝到 /opt/software 目錄下

MySQL 下載地址

使用FinalShell 將 MySQL 匯入到 opt 目錄下面的 software 資料夾下面

在 Linux 系統下的 opt 目錄中檢視軟體包是否匯入成功

ll /opt/software
總用量 734364
-rw-rw-r--. 1 owenxuan owenxuan 605187279 12月 24 10:51 mysql-8.0.27-1.el8.x86_64.rpm-bundle.tar

解壓 MySQL 安裝包

tar -xf mysql-8.0.27-1.el8.x86_64.rpm-bundle.tar
-rw-rw-r--. 1 owenxuan owenxuan 797798400 9月  29 15:51 mysql-8.0.27-1.el8.x86_64.rpm-bundle.tar
-rw-r--r--. 1 owenxuan owenxuan  14692316 9月  29 15:33 mysql-community-client-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan  35730444 9月  29 15:33 mysql-community-client-debuginfo-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan   2524808 9月  29 15:34 mysql-community-client-plugins-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan   3056028 9月  29 15:34 mysql-community-client-plugins-debuginfo-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan    645452 9月  29 15:34 mysql-community-common-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan   3829756 9月  29 15:34 mysql-community-debuginfo-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan  22083196 9月  29 15:34 mysql-community-debugsource-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan   2276504 9月  29 15:34 mysql-community-devel-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan   1565372 9月  29 15:34 mysql-community-libs-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan   3094780 9月  29 15:34 mysql-community-libs-debuginfo-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan  55964292 9月  29 15:36 mysql-community-server-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan  22725496 9月  29 15:36 mysql-community-server-debug-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan 101981976 9月  29 15:37 mysql-community-server-debug-debuginfo-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan 261643100 9月  29 15:37 mysql-community-server-debuginfo-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan 241719788 9月  29 15:38 mysql-community-test-8.0.27-1.el8.x86_64.rpm
-rw-r--r--. 1 owenxuan owenxuan  24246504 9月  29 15:39 mysql-community-test-debuginfo-8.0.27-1.el8.x86_64.rpm

在安裝目錄下執行 rpm 安裝

安裝缺少環境

yum install -y libaio

在安裝目錄下執行 rpm 安裝

sudo rpm -ivh mysql-community-common-8.0.27-1.el8.x86_64.rpm 
sudo rpm -ivh mysql-community-libs-8.0.27-1.el8.x86_64.rpm 
sudo rpm -ivh mysql-community-libs-compat-8.0.27-1.el8.x86_64.rpm 
sudo rpm -ivh mysql-community-client-8.0.27-1.el8.x86_64.rpm 
sudo rpm -ivh mysql-community-server-8.0.27-1.el8.x86_64.rpm

初始化資料庫

sudo mysqld --initialize --user=mysql

檢視臨時生成的 root 使用者的密碼

sudo cat /var/log/mysqld.log 

啟動 MySQL 服務

sudo systemctl start mysqld

登入 MySQL 資料庫

mysql -uroot -p
Enter password: --輸入臨時生成的密碼

必須先修改 root 使用者的密碼,否則執行其他的操作會報錯

mysql> set password = password("新密碼");

修改 mysql 庫下的 user 表中的 root 使用者允許任意 ip 連線

mysql> update mysql.user set host='%' where user='root';
mysql> flush privileges;

Hive 元資料配置到 MySQL

下載JDBC驅動

JDBC驅動下載地址

拷貝JDBC驅動

cp /opt/software/mysql-connector-java-8.0.27.jar $HIVE_HOME/lib

配置 Metastore 到 MySQL

在$HIVE_HOME/conf 目錄下新建 hive-site.xml 檔案

vim $HIVE_HOME/conf/hive-site.xml 

新增如下內容

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- jdbc 連線的 URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://10.10.10.31:3306/metastore?useSSL=false</value>
    </property>
    <!-- jdbc 連線的 Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <!-- jdbc 連線的 username-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <!-- jdbc 連線的 password -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>OUwen501</value>
    </property>
    <!-- Hive 元資料儲存版本的驗證 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <!--元資料儲存授權-->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    <!-- Hive 預設在 HDFS 的工作目錄 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <!-- 指定儲存元資料要連線的地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://10.10.10.31:9083</value>
    </property>
    <!-- 指定 hiveserver2 連線的 host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>10.10.10.31</value>
    </property>
    <!-- 指定 hiveserver2 連線的埠號 -->
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>
</configuration>

登陸 MySQL

mysql -uroot -pOUwen501

新建 Hive 元資料庫

mysql> create database metastore;
mysql> quit;

初始化 Hive 元資料庫

schematool -initSchema -dbType mysql -verbose

再次啟動 Hive

啟動 Hive

bin/hive

使用 Hive

hive> show databases; 
hive> show tables; 
hive> create table test(id int); 
hive> insert into test values(1); 
hive> select * from test;

使用元資料服務的方式訪問 Hive

啟動 metastore

hive --service metastore
2021-12-24 16:58:08: Starting Hive Metastore Server 
  • 注意: 啟動後窗口不能再操作,需開啟一個新的 shell 視窗做別的操作

啟動 hive

bin/hive

使用 JDBC 方式訪問 Hive

使用 JDBC 方式訪問 Hive

bin/hive --service hiveserver2

啟動 beeline 客戶端(需要多等待一會)

bin/beeline -u jdbc:hive2://10.10.10.31:10000 -n owenxuan

成功啟動資訊

Connecting to jdbc:hive2://10.10.10.31:10000
Connected to: Apache Hive (version 3.1.2)
Driver: Hive JDBC (version 3.1.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.2 by Apache Hive
0: jdbc:hive2://10.10.10.31:10000> 

編寫 hive 服務啟動指令碼

vim ~/bin/hiveservices.sh

輸入如下內容

#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]
then
	mkdir -p $HIVE_LOG_DIR
fi
#檢查程序是否執行正常,引數 1 為程序名,引數 2 為程序埠
function check_process()
	{
		pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print
		$2}')
		ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -
		d '/' -f 1)
		echo $pid
		[[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
	}
	function hive_start()
		{
			metapid=$(check_process HiveMetastore 9083)
			cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"
			[ -z "$metapid" ] && eval $cmd || echo "Metastroe 服務已啟動"
			server2pid=$(check_process HiveServer2 10000)
			cmd="nohup hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
			[ -z "$server2pid" ] && eval $cmd || echo "HiveServer2 服務已啟動"
		}
		function hive_stop()
			{
				metapid=$(check_process HiveMetastore 9083)
				[ "$metapid" ] && kill $metapid || echo "Metastore 服務未啟動"
				server2pid=$(check_process HiveServer2 10000)
				[ "$server2pid" ] && kill $server2pid || echo "HiveServer2 服務未啟動"
			}
			case $1 in
			"start")
			hive_start
		;;
		"stop")
		hive_stop
	;;
	"restart")
	hive_stop
	sleep 2
	hive_start
;;
"status")
check_process HiveMetastore 9083 >/dev/null && echo "Metastore 服務執行正常" || echo "Metastore 服務執行異常"
check_process HiveServer2 10000 >/dev/null && echo "HiveServer2 服務執行正常" || echo "HiveServer2 服務執行異"
;;
*)
echo Invalid Args!
echo 'Usage: '$(basename $0)' start|stop|restart|status'
;;
esa

儲存後退出,然後賦予指令碼執行許可權

chmod +x hiveservices.sh

測試指令碼

hiveservices.sh start