Hive基础知识(五):Hive 配置 JDBC方式访问

发布时间:2024年01月10日

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

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

2)启动 hiveserver2

[zzdq@hadoop100 hive]$ bin/hive --service hiveserver2

配置hadoop中的core-site.xml文件,允许hive访问

<!--配置访问hadoop的权限,能够让hive访问到-->
<property>
    <name>hadoop.proxyuser.atguigu.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.atguigu.groups</name>
    <value>*</value>
</property>

配置完成之后,需要重启整个hadoop集群。

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

 bin/beeline -u jdbc:hive2://hadoop100:10000 -n zzdq

4)看到如下界面

[zzdq@hadoop100 hive]$ bin/beeline -u jdbc:hive2://hadoop100:10000 -n zzdq
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop-3.1.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://hadoop100: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://hadoop100:10000>

5)编写 hive 服务启动脚本(了解)

(1)前台启动的方式导致需要打开多个 shell 窗口,可以使用如下方式后台方式启动

nohup: 放在命令开头,表示不挂起,也就是关闭终端进程也继续保持运行状态
/dev/null:是 Linux 文件系统中的一个文件,被称为黑洞,所有写入改文件的内容都会被自动丢弃
2>&1 : 表示将错误重定向到标准输出上
&: 放在命令结尾,表示后台运行

一般会组合使用: nohup [xxx 命令操作]> file 2>&1 &,表示将 xxx 命令运行的结果输出到 file 中,并保持命令启动的进程在后台运行。

如上命令不要求掌握。

[zzdq@hadoop202 hive]$ nohup hive --service metastore 2>&1 &
[zzdq@hadoop202 hive]$ nohup hive --service hiveserver2 2>&1 &

(2)为了方便使用,可以直接编写脚本来管理服务的启动和关闭

[zzdq@hadoop102 hive]$ vim $HIVE_HOME/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
3)添加执行权限

[zzdq@hadoop100 hive]$ chmod +x $HIVE_HOME/bin/hiveservices.sh 

4)启动 Hive 后台服务

[zzdq@hadoop100 hive]$ hiveservices.sh start 
Metastroe 服务已启动
HiveServer2 服务已启动

查看状态

[zzdq@hadoop100 hive]$ hiveservices.sh status
Metastore 服务运行正常
HiveServer2 服务运行正常

文章来源:https://blog.csdn.net/zuodingquan666/article/details/135470995
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。