赞
踩
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 服务运行正常
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。