分布式集群启停脚本,远程登录脚本

 将脚本放在/usr/local/bin/目录下,在任何位置都可以使用脚本

注:本脚本建立在已经配置免密登录的基础上

1、xcall脚本,实现远程登录,在三台虚拟机上使用命令

#! /bin/bash

if [ $# -eq 0 ]
then
  echo '没有提供参数'
  exit
fi

for i in 11 12 13
do
  echo --------------- hadoop$i -----------
  ssh root@hadoop$i "source /etc/profile;$*"
done

 使用说明:xcall

2、开机脚本,启动的服务有,三个节点上的zookeeper,HDFS,yarn,yarn的历史服务

#!/bin/bash  
  
# 确保脚本有足够的权限执行(虽然作为系统服务运行时通常由root执行)  
  
echo "开始启动ZooKeeper服务..."  
  
# 检查zkServer.sh脚本是否存在并具有执行权限  
if [ -x "$(command -v zkServer.sh)" ]; then  
    xcall zkServer.sh start  
    if [ $? -eq 0 ]; then  
        echo "ZooKeeper服务启动成功"  
    else  
        echo "ZooKeeper服务启动失败"  
        exit 1  # 如果ZooKeeper启动失败,可以选择退出脚本或继续执行其他任务  
    fi  
else  
    echo "找不到或无法执行zkServer.sh脚本"  
    exit 1  
fi  
  
# 在这里,你可以添加更多命令来启动其他服务,比如Hadoop  
# ...  
# 例如,如果你有一个start-all.sh脚本来启动Hadoop集群:  
  
echo "ZooKeeper服务已启动,接下来尝试启动Hadoop集群..."  
  
# 检查start-all.sh脚本是否存在并具有执行权限  
if [ -x "$(command -v start-all.sh)" ]; then  
    start-all.sh  
    if [ $? -eq 0 ]; then  
        echo "Hadoop集群启动成功"  
    else  
        echo "Hadoop集群启动失败"  
        # 注意:即使Hadoop启动失败,你可能也不希望立即退出脚本  
        # 取决于你的具体需求,你可能想要记录错误并继续,或者执行一些清理操作  
    fi  
else  
    echo "找不到或无法执行start-all.sh脚本"  
    # 这里你也可以选择是否要因为Hadoop无法启动而退出脚本  
fi  

echo "====启动historyserver====="
# 检查start-all.sh脚本是否存在并具有执行权限  
if [ -x "$(command -v start-all.sh)" ]; then  
    mr-jobhistory-daemon.sh start historyserver
    if [ $? -eq 0 ]; then  
        echo "historyserver启动成功"  
    else  
        echo "historyserver启动失败"  
        # 注意:即使Hadoop启动失败,你可能也不希望立即退出脚本  
        # 取决于你的具体需求,你可能想要记录错误并继续,或者执行一些清理操作  
    fi  
else  
    echo "找不到或无法执行historyserver"  
    # 这里你也可以选择是否要因为Hadoop无法启动而退出脚本  
fi 

#echo "====启动metastore====="
#nohup hive --service metastore >> /root/hive2.log 2>&1 &

# 脚本执行结束  
echo "所有服务启动完成"  
exit 0

 3、关机脚本,关闭yarn,HDFS,zookeeper,并最终将三个节点关机

#!/bin/bash  
  
if [ "$(id -u)" != "0" ]; then  
   echo "此脚本必须以root权限运行" 1>&2  
   exit 1  
fi 


echo "开始停止Hadoop集群..."  
# 检查stop-all.sh脚本是否存在并具有执行权限  
if [ -x "$(command -v stop-all.sh)" ]; then  
    stop-all.sh  
    if [ $? -eq 0 ]; then  
        echo "Hadoop集群停止成功"  
    else  
        echo "Hadoop集群停止失败"  
        exit 1  
    fi  
else  
    echo "找不到或无法执行stop-all.sh脚本"  
    exit 1  
fi  

echo "开始停止ZooKeeper服务..."  
# 检查zkServer.sh脚本是否存在并具有执行权限  
if [ -x "$(command -v zkServer.sh)" ]; then  
    for((i=11;i<=13;i++))
	do
	  echo "========= hadoop$i ============="
	  ssh hadoop$i "source /etc/profile; zkServer.sh stop"
	  echo "$i:ZooKeeper服务停止成功"
	done   
else  
    echo "找不到或无法执行zkServer.sh脚本"  
    exit 1  
fi  

echo "所有服务停止完成"  
echo "所有服务停止完成,是否希望关闭所有机器?(y/n): "  
read answer  
  
# 转换为小写并检查有效输入  
answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')  
if [ "$answer" = "y" ]; then  
    echo "正在关闭所有机器,从 hadoop13 开始..."  
    # 逆序遍历数组以从 hadoop13 开始关闭  
     for((i=13;i>=11;i--))
	do
	  echo "========= hadoop$i ============="
	  if ssh hadoop$i "source /etc/profile; shutdown now"; then
			echo "$hadoop$i:关机成功"
	  else
			echo"$hadoop$i:关机失败"
	  fi
	done   
else  
    echo "不会关闭任何机器。"  
fi  
exit 0

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值