Apache Hive 3.x 版本的配置和部署

本文详细介绍了如何将Hive的元数据配置到MySQL数据库中,包括拷贝MySQL驱动、配置Hive-site.xml、初始化元数据库、启动Hive客户端以及使用元数据服务和JDBC方式访问Hive。同时,还提供了一键启动和停止Hive服务的脚本。
摘要由CSDN通过智能技术生成

目录

0. 相关文章链接

1. Hive安装部署

2. Hive元数据配置到MySQL

2.1. 拷贝驱动

2.2. 配置Metastore到MySQL

3. 初始化元数据库

4. 启动Hive客户端并使用

5. 使用元数据服务的方式访问 Hive

6. 使用 JDBC 方式访问 Hive

7. 编写hive一键脚本


0. 相关文章链接

大数据基础知识点 文章汇总

1. Hive安装部署

1)上传安装包到服务器对应目录

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

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

3)重命名解压目录,并配置软链接

mv apache-hive-3.1.2-bin/ hive-3.1.2
ln -s /opt/module/hive-3.1.2/ /opt/module/hive

4)修改环境变量,并source环境变量,使生效

vim /etc/profile

# 添加如下配置

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

# source环境变量,使生效
source /etc/profile

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

cd /opt/module/hive/lib/
mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak

2. Hive元数据配置到MySQL

2.1. 拷贝驱动

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

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

2.2. 配置Metastore到MySQL

1)在$HIVE_HOME/conf目录下新建hive-site.xml文件

vim /opt/module/hive/conf/hive-site.xml

2)添加如下内容

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://bigdata1:3306/metastore?useSSL=false</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>Yangshibiao123456.</value>
    </property>

    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>

    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>

    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>

    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>bigdata1</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>
    
</configuration>

3. 初始化元数据库

1)登陆MySQL

 mysql -uroot -pYangshibiao123456.

2)新建Hive元数据库

create database metastore;
quit;

3)初始化Hive元数据库

 schematool -initSchema -dbType mysql -verbose

在数据库中有如下表即成功初始化:

4. 启动Hive客户端并使用

# 启动hive客户端
hive

# 使用hivesql
show databases;
show tables;
create table test (id int);
insert into test values(1);
select * from test;

5. 使用元数据服务的方式访问 Hive

1) 在 hive-site.xml 文件中添加如下配置信息

    <!-- 指定存储元数据要连接的地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://bigdata1:9083</value>
    </property>

2)启动 metastore

hive --service metastore

注意: 启动后窗口不能再操作,需打开一个新的 shell 窗口做别的操作

在一个新的窗口启动hive

6. 使用 JDBC 方式访问 Hive

1) 在 hive-site.xml 文件中添加如下配置信息

    <!-- 指定 hiveserver2 连接的 host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>bigdata1</value>
    </property>
    <!-- 指定 hiveserver2 连接的端口号 -->
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>

注意:上述配置文件中已有,不需要添加了

2)启动 hiveserver2

hive --service hiveserver2

3) 启动 beeline 客户端(需要多等待一会)

beeline -u jdbc:hive2://bigdata1:10000 -n hive

# 上述的hive用户可以填随意用户

注意:上述连接可能报错,此时需要在 hadoop 的 core-site.xml 配置文件中配置如下配置:

    <property>
        <name>hadoop.proxyuser.hive.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.hive.groups</name>
        <value>*</value>
    </property>

当看到如下界面,即启动成功:

Connecting to jdbc:hive2://bigdata1: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://bigdata1:10000>

7. 编写hive一键脚本

vim /root/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'
  ;;

esac

添加对应权限,即可通过该脚本操作hive服务


注:其他相关文章链接由此进 -> 大数据基础知识点 文章汇总


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电光闪烁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值