A4--Hive部署
一、版本信息
|
|
|
|---|---|
| JDK | 1.8 |
| Hive | 3.1.3 |
| MySQL | 8.0.30 |
二、安装部署Mysql
参考地址:离线安装MySql8.0(主从模式)
三、安装部署Hive
1. 安装准备
1) 把 apache-hive-3.1.3-bin.tar.gz 上传到 linux 的/opt/src 目录下并解压
tar -zxvf /opt/src/apache-hive-3.1.3-bin.tar.gz |
2) 修改 apache-hive-3.1.3-bin 的名称为 hive-3.1.3
mv /opt/src/apache-hive-3.1.3-bin /data/hive-3.1.3 |
3) 修改/etc/profile.d/my_env.sh, 添加环境变量
vim /etc/profile.d/my_env.sh |
4) 添加内容
# HIVEexport HIVE_HOME=/data/hive-3.1.3export PATH=$PATH:$HIVE_HOME/bin |
5) 解决 guava Jar 包冲突
mv $HIVE_HOME/lib/guava-19.0.jar $HIVE_HOME/lib/guava-19.0.jar.bak |
6) 解决日志 Jar 包冲突
mv $HIVE_HOME/lib/log4j-slf4j-impl-2.17.1.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.17.1.jar_bak |
2. 配置元数据到 MySQL
1) 拷贝驱动
# 将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下cp mysql-connector-java-8.0.30.jar $HIVE_HOME/lib/mysql-connector-java-8.0.30.jar |
2) 配置 Metastore 到 MySQL
vim $HIVE_HOME/conf/hive-site.xml |
添加如下内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration> <!-- jdbc 连接的 URL --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.0.0:3306/metastore?useSSL=false</value> </property> <!-- jdbc 连接的 Driver--> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <!-- jdbc 连接的 username--> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>username</value> </property> <!-- jdbc 连接的 password --> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</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://hive01:9083</value> </property> <!-- 指定 hiveserver2 连接的 host --> <property> <name>hive.server2.thrift.bind.host</name> <value>hive01</value> </property> <!-- 指定 hiveserver2 连接的端口号 --> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <!-- 打印表头信息--> <property> <name>hive.cli.print.header</name> <value>true</value> </property> <!-- 打印当前库信息--> <property> <name>hive.cli.print.current.db</name> <value>true</value> </property></configuration> |
3) 登陆 MySQL, 新建 Hive 元数据库
mysql> create database metastore;mysql> quit; |
4) 初始化 Hive 元数据库
schematool -initSchema -dbType mysql -verbose |
3. 使用 JDBC 方式访问 Hive
1) 启动 metastore
hive --service metastore |
2)启动 hiveserver2
hive --service hiveserver2 |
3)启动 beeline 客户端(需要多等待一会)
bin/beeline -u jdbc:hive2://hive01:10000 -n root |
4) 编写 hive 服务启动脚本
vim $HIVE_HOME/bin/hiveservices.sh |
写入下面内容
#!/bin/bashHIVE_LOG_DIR=$HIVE_HOME/logsif [ ! -d $HIVE_LOG_DIR ];then mkdir -p $HIVE_LOG_DIRfi#检查进程是否运行正常,参数 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 服务运行异常" ;;*) echo Invalid Args! echo 'Usage: '$(basename $0)' start|stop|restart|status' ;;esac |
添加执行权限
chmod +x $HIVE_HOME/bin/hiveservices.sh |
启动 Hive 后台服务
hiveservices.sh start |
本文来自博客园,作者:Jerry·,转载请注明原文链接:https://www.cnblogs.com/jerry-0910/p/17286135.html

浙公网安备 33010602011771号