栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive3.1.2安装与配置

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了!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433815.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号