Hive基础知识(五):Hive 配置 JDBC方式访问
2024-01-10 08:36:46
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!