Hive3.1.2安装与配置

Hive3.1.2安装与配置,第1张

Hive3.1.2安装与配置 前言

本教程适用于初学者安装hive学习使用,很多配置,需要个人在后续的学习与使用中探索来掌握。

一、首先要安装MySQL

        原因:Hive默认使用的元数据库为derby,开启Hive之后就会占用元数据库,且不与其他客户端共享数据,如果想多窗口 *** 作就会报错, *** 作比较局限。以我们需要将Hive的元数据地址改为MySQL,可支持多窗口 *** 作。

MySQL的安装可以参考我的另一篇博客

        CentOS7安装mysql8_tianqin_9169的博客-CSDN博客

二、Hive安装 1、下载hive包

Index of /dist/hivehttp://archive.apache.org/dist/hive/

根据自己需求,选择想用的版本的包进行下载,我这几就以3.1.2为例,hadoop版本用的3.1.3

下载完成后进行 解压,配置环境变量--步骤省略

 2、Jar包冲突

因为跟hadoop的jar包存在冲突,主要有两个jar包冲突,一个log4j-slf4j-impl-2.10.0.jar跟hadoop冲突,可以删除,我这里就打个标记弃用。

mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak

另一个时guava-19.0.jar,跟hadoop里面的guava-27.0-jre.jar冲突,采用高版本替换低版本的方式。

cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib

rm $HIVE_HOME/lib/guava-19.0.jar

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

我这里选用的8.0.16自己可以选择版本去下载

https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.16

4、配置metastore到MySql

在$HIVE_HOME/conf目录下新建hive-site.xml文件,根据自己的情况更在主机名,mysql的用户名和密码

vim $HIVE_HOME/conf/hive-site.xml




    
    
        javax.jdo.option.ConnectionURL
        jdbc:mysql://hadoop001:3306/metastore?useSSL=false


    
    
        javax.jdo.option.ConnectionDriverName
        com.mysql.jdbc.Driver


	
    
        javax.jdo.option.ConnectionUserName
        root
    

    
    
        javax.jdo.option.ConnectionPassword
        123456


    
    
        hive.metastore.warehouse.dir
        /user/hive/warehouse
    
    
   
    
        hive.metastore.schema.verification
        false
    
   
    
    
        hive.metastore.event.db.notification.api.auth
        false
    
    
    
        hive.metastore.uris
        thrift://hadoop102:9083
    
    
    
        hive.server2.thrift.bind.host
        hadoop102
    

    
    
        hive.server2.thrift.port
        10000
    


三、启动Hive 1、 初始化元数据库

1)登陆MySQL

 mysql -uroot -p123456

2)新建Hive元数据库

mysql> create database metastore;

mysql> quit;

3)初始化Hive元数据库

schematool -initSchema -dbType mysql -verbose

2.5.2 启动Hive 1)先启动hadoop集群

start-dfs.sh

start-yarn.sh

启动hadoop集群后,要等hdfs退出安全模式之后再启动hive。

2)启动Hive

使用hive命令启动hive

hive

[tianqin@hadoop101 ~]$ hive
which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_212/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/opt/module/zookeeper-3.5.7/bin:/opt/module/kafka_2.11-2.4.1/bin:/opt/module/eagle/bin:/opt/module/flume-1.9.0//bin:/opt/module/sqoop-1.4.6/bin:/opt/module/hive-3.1.2//bin:/opt/module/hbase-2.0.5//bin:/opt/module/phoenix-5.0.0/bin:/opt/module/spark-yarn/bin:/opt/module/spark-yarn/sbin:/opt/module/kylin/bin:/opt/module/flink-1.12.2//bin:/home/tianqin/.local/bin:/home/tianqin/bin)
Hive Session ID = 23b58961-615b-445a-a8de-d5dbfd47974f

Logging initialized using configuration in jar:file:/opt/module/hive-3.1.2/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive (default)>

这种状态表示启动成功,接下来就可以HiveSQL *** 作了。

3) 启动hiveserver2

hive --service hiveserver2

这里会需要一会时间大概要2-3分钟左右,而且会阻塞窗口。

4)启动beeline客户端

另开一个窗口,输入一下命令启动beeline客户端,连接hive.这里tianqin是我的user,hadoop101是我的主机名。

beeline -u jdbc:hive2://hadoop101:10000 -n tianqin

[tianqin@hadoop101 conf]$ beeline -u jdbc:hive2://hadoop101:10000 -n tianqin
Connecting to jdbc:hive2://hadoop101: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://hadoop101:10000>

这种状态表示启动成功,可以使用hivesql *** 作了。

想要通过外部的客户端连接hive就需要开启hiveserver2

四、编写启动脚本

前面也看到了,开启hiveserver2服务会阻塞窗口,为了方便启停hiveserver2,我们来编写一个脚本。

vim $HIVE_HOME/bin/myhive.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 $HIVE_HOME/bin/myhive.sh

到此就可以练习使用hive了!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5116930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存