hive交互方式一般有三种:
1) bin/hive 2)使用SQL脚本或文件进行交互 3)beeline client
本文的一键启动脚本采用第三种交互方式beeline client,以下是建立脚本需要的过程:
1.安装expect
yum install -y expect
2.建立expect脚本启动beeline,并登入hive。脚本名称为:beeline.exp,我的脚本是放在了/develop/onekey目录下面,这个路径下面要用到
#!/bin/expect
spawn beeline
set timeout 5
expect "beeline>"
send "!connect jdbc:hive2://node3:10000\r"
expect "Enter username for jdbc:hive2://node3:10000:"
send "root\r"
expect "Enter password for jdbc:hive2://node3:10000:"
send "******\r"
interact
以上脚本send "root\r"中的root是登入的用户名,此用户名需要和hadoop中的用户名保持一致。
send "******\r" 里面的*可以随意输入。
3.新建一个文件命名为myhive.sh,路径在/develop/onekey,主要是hive相关操作,比如启动metastore,hiveserver2以及beeline登入hive,以下是脚本内容:
#!/bin/bash
# 判断参数个数
if [ $# -lt 1 ]
then
echo "need one param, but given $# ..."
exit;
fi
# 日志文件的存储位置
file_path='/develop/data/logs/hive.log'
case $1 in
"start")
echo ' ---------- start metastore ---------- '
nohup /develop/server/hive-2.1.0/bin/hive --service metastore >> $file_path 2>&1 &
echo ' ---------- start hiveserver2 ---------- '
nohup /develop/server/hive-2.1.0/bin/hive --service hiveserver2 >> $file_path 2>&1 &
;;
"stop")
echo ' ---------- stop hiveserver2 ---------- '
kill -9 $(jps -m | grep 'HiveServer2' | awk 'NR==1{print $1}')
echo ' ---------- stop metastore ---------- '
kill -9 $(jps -m | grep 'HiveMetaStore' | awk 'NR==1{print $1}')
;;
"beeline")
echo ' ---------- enter beeline ---------- '
expect /develop/onekey/beeline.exp
;;
*)
echo "Input Params Error ..."
;;
esac
4.创建/develop/data/logs目录,用于存储hive启动的日志
mkdir -p /develop/data/logs
5.在/etc/profile.d/下面新建一个my_env.sh文件
vim /etc/profile.d/my_env.sh
6.在新建的my_env.sh文件中配置脚本的环境变量
# 一键启动脚本位置
ONEKEY_HOME=/develop/onekey
export PATH=$PATH:$ONEKEY_HOME
7.刷新环境变量
source /etc/profile
配置环境变量的主要目的是为了在任意地方都能直接使用脚本进行hive的相关操作
以上便是hive一键启动的脚本,写这篇文章的主要目的一是记录自己的学习,二是以后用到的时候方便查找,最后也希望这篇文章能够帮到大家。如果中间有什么问题欢迎大家指正,谢谢。