Hive安装部署

Hive安装部署

apache-hive-3.1.2-bin.tar.gz 上传到 linux 的 /opt/software 目录下

在这里插入图片描述

解压 apache-hive-3.1.2-bin.tar.gz/opt/module/ 目录下面

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

在这里插入图片描述

修改名称

mv apache-hive-3.1.2-bin/ hive-3.1.2/

在这里插入图片描述

修改 /etc/profile.d/my_env.sh ,添加环境变量

sudo vim /etc/profile.d/my_env.sh
#HIVE_HOME
export HIVE_HOME=/opt/module/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin

在这里插入图片描述

环境变量生效 :

source /etc/profile.d/my_env.sh

分发

sudo /usr/local/sbin/xsync /etc/profile.d/my_env.sh

在这里插入图片描述

解决日志 Jar 包冲突,进入 /opt/module/hive-3.1.2/lib 目录

mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak

在这里插入图片描述

mv hive-env.sh.template hive-env.sh

在这里插入图片描述

vim hive-env.sh

在这里插入图片描述

在这里插入图片描述

配置 Mysql

https://blog.csdn.net/qq_44226094/article/details/123361850

Hive元数据配置到MySQL

拷贝驱动

将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下

cp /opt/software/mysql-connector-java-5.1.27.jar /opt/module/hive-3.1.2/lib/

在这里插入图片描述

配置MySQL作为元数据存储

conf 目录下新建 hive-site.xml 文件

vim 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://cpucode102:3306/metastore?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</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>xxxxxx</value>
    </property>
	<!-- Hive默认在HDFS的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
	<!-- Hive元数据存储的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>

    <!-- 指定存储元数据要连接的地址 -->
    <!--     
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://cpucode101:9083</value>
    </property>
 	-->
 	
	<!-- 指定hiveserver2连接的端口号 -->
    <property>
	    <name>hive.server2.thrift.port</name>
	    <value>10000</value>
    </property>

	<!-- 指定hiveserver2连接的host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>cpucode101</value>
    </property>

	<!-- 元数据存储授权  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</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>

	<!-- DataGrip 显示字段信息  -->
	<property>
		<name>metastore.storage.schema.reader.impl</name>
		<value>org.apache.hadoop.hive.metastore.SerDeStorageSchemaReader</value>
	</property>

</configuration>

在这里插入图片描述

启动Hive

初始化元数据库

新建 Hive 元数据库

metastore

在这里插入图片描述

初始化 Hive 元数据库

schematool -initSchema -dbType mysql -verbose

在这里插入图片描述

脚本

该脚本依赖一个 net-tool 工具包 , 而且内网中没有 , 必须离线下载安装

sudo rpm -ihv net-tools-2.0-0.25.20131004git.el7.x86_64.rpm

在这里插入图片描述

/home/cpu/bin

vim 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 &"
    cmd=$cmd" sleep 4; hdfs dfsadmin -safemode wait >/dev/null 2>&1"
    [ -z "$metapid" ] && eval $cmd || echo "Metastroe服务已启动"
    server2pid=$(check_process HiveServer2 10000)
    cmd="nohup hive --service 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'
    ;;
esac
chmod 777 hiveservices.sh

在这里插入图片描述

hiveservices.sh start

在这里插入图片描述

hiveservices.sh status

在这里插入图片描述

通过 DataGrip 连接也没有问题

在这里插入图片描述

启动hive客户端

启动Hive客户端

hive

在这里插入图片描述

查看一下数据库

show databases;

在这里插入图片描述

quit;

在这里插入图片描述

修改元数据库字符集

Hive元数据库的字符集默认为 Latin1,所以不支持中文字符,当建表语句有中文注释,会出现乱码现象

修改Hive元数据库中存储注释的字段的字符集为 utf-8

字段注释

alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;

在这里插入图片描述

表注释

alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值