一键启停Hadoop和hive脚本
时间: 2025-05-23 10:58:26 浏览: 9
### 一键启动和停止 Hadoop 和 Hive 的脚本
#### 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` 即可执行关闭操作。
#### 结合两者的一键启停方案
为了方便起见,可以进一步封装成一个综合性的脚本,统一处理 Hadoop 和 Hive 的启动与停止逻辑。这里给出一个基础版本作为参考:
```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` 控制整体环境的服务状态转换过程。
---
阅读全文
相关推荐
















