shell一键启动hive脚本

本文介绍了如何通过Beeline客户端实现Hive的交互式启动。首先,安装expect并创建beeline.exp脚本,设置登陆Hive的用户名和密码。然后,创建myhive.sh脚本来启动metastore、hiveserver2及Beeline。接着,建立日志目录,配置环境变量,确保脚本可在任意位置执行。最后,文章强调了编写此脚本的目的和实用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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一键启动的脚本,写这篇文章的主要目的一是记录自己的学习,二是以后用到的时候方便查找,最后也希望这篇文章能够帮到大家。如果中间有什么问题欢迎大家指正,谢谢。

### 一键启动和停止 HadoopHive脚本 #### Hadoop一键启停脚本Hadoop 安装目录的 `sbin` 文件夹下,存在多个用于管理服务状态的脚本。如果希望一次性启动 HDFS 和 YARN,则可以直接使用 `start-all.sh` 脚本[^1]。 ```bash # 启动 HDFS 和 YARN ./start-all.sh ``` 同样地,可以通过 `stop-all.sh` 停止所有 Hadoop 组件: ```bash # 停止 HDFS 和 YARN ./stop-all.sh ``` 如果不希望通过单个脚本来控制整个集群的状态,还可以单独运行以下命令来分别启动或停止 HDFS 和 YARN: - **启动 HDFS**: 使用 `start-dfs.sh`。 - **启动 YARN**: 使用 `start-yarn.sh`。 - **停止 HDFS**: 使用 `stop-dfs.sh`。 - **停止 YARN**: 使用 `stop-yarn.sh`。 #### Hive一键启停脚本 对于 Hive 来说,其本身并不提供类似于 Hadoop一键启停脚本,但可以通过手动编写 shell 脚本来实现这一功能。以下是两个简单的示例脚本,分别用于启动和停止 Hive Metastore 及 CLI。 ##### 启动 Hive (Metastore 和 CLI) 创建名为 `start-hive.sh` 的脚本文件并添加如下内容: ```bash #!/bin/bash # 启动 Hive Metastore 并将其日志重定向至指定位置 nohup hive --service metastore >> /path/to/logs/metastore.log 2>&1 & echo "Hive Metastore 已经成功启动" # 或者可以选择进入 Hive Shell 进行交互式查询 hive ``` 注意:这里的路径 `/path/to/logs/` 需要替换为你实际的日志存储地址[^2]。 ##### 停止 Hive (仅限于 Metastore) 由于没有官方提供的 stop 脚本,因此需要通过查找进程 ID (PID) 手工终止相应服务。下面是一个简单的方法用来杀死正在运行中的 Hive Metastore 实例: ```bash #!/bin/bash METASTORE_PID=$(ps aux | grep 'org.apache.hadoop.hive.metastore.HiveMetaStore' | grep -v grep | awk '{print $2}') if [ ! -z "$METASTORE_PID" ]; then kill -9 $METASTORE_PID echo "已强制结束 Hive Metastore ($METASTORE_PID)" else echo "未找到任何正在运行的 Hive Metastore" fi ``` 保存以上代码片段为 `stop-hive-metastore.sh` 即可执行关闭操作。 #### 结合两者的一键启停方案 为了方便起见,可以进一步封装成一个综合性的脚本,统一处理 HadoopHive启动与停止逻辑。这里给出一个基础版本作为参考: ```bash #!/bin/bash case "$1" in start) ./start-all.sh # Start Hadoop services. nohup hive --service metastore >> /path/to/logs/metastore.log 2>&1 & sleep 5 # Wait a few seconds to ensure the service is up before proceeding. beeline -u jdbc:hive2://localhost:10000/default -n username -p password <<< "!connect;" || true ;; stop) ./stop-all.sh # Stop all Hadoop daemons gracefully first. METASTORE_PID=$(pgrep -f org\.apache\.hadop\.hive\.metastore\.HiveMetaStore) if [[ $? -eq 0 ]];then kill -SIGTERM ${METASTORE_PID} while pgrep -qxf "${METASTORE_PID}"; do :; done; fi ;; esac exit 0 ``` 此脚本接受参数 `start` 或 `stop` 控制整体环境的服务状态转换过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值