快捷搜索: 王者荣耀 脱发

Hadoop集群开机自启动脚本

需要设置相关的环境变量并先编写hive元数据和hiveserver2启动脚本,且调试通过

参考之前hive脚本:

创建脚本文件:touch /etc/init.d/hadoop

#!/bin/bash
#chkconfig:2345 95 96
#description:script to start/stop hadoop,flink,spark,hive,zookeeper,kafka,hbase

#引入导出环境变量
source /etc/profile.d/my_env.sh

if[ ! -f /etc/profile.d/my_env.sh ] ; then
  echo "environment-variables is not set, please set it in /etc/profile.d/my_env.sh" >&2
  exit 1
fi

if [ -z "$HADOOP_HOME" ] ;  then
  echo "environment is not set, please check it your hadoop environment" >&2
  exit 1
fi

if [ $# -lt 1 ]
then
echo "Usage: $0{start|start|status}"
exit
fi

#服务器列表(IP)
IPS=(node1 node2 node3)

####检查所有服务器是否在线->tag=0表示没有全部在线,tag=1表示全部在线
while true
do

for ip in ${IPS[@]}
do
ping -c 2 $ip > /dev/null 2>&1

if [ $? -eq 0 ]; then
tag=1
echo $ip is UP
else
tag=0
echo $ip is DOWN
break;
fi;
done;

if [ $tag -eq 1 ]; then
break;
fi;
done;


case $1 in
start)

####在当前服务器启动hadoop集群
$HADOOP_HOME/sbin/start-all.sh &>/dev/null
echo hadoop start success!

####在当前服务器启动flink集群
$FLINK_HOME/bin/start-cluster.sh &>/dev/null
echo flink start success!

####在当前服务器启动spark集群
$SPARK_HOME/sbin/start-all.sh &>/dev/null
echo spark start success!

####在当前服务器启动hive
$HIVE_HOME/bin/hiveservice.sh start &>/dev/null
echo hive start success!

####通过远程连接的方式启动各服务器的zookeeper,tag=1表示全部启动
tag=0
for ip in ${IPS[@]}
do

ssh root@$ip $ZK_HOME/bin/zkServer.sh start &>/dev/null
if [ $? -ne 0 ]; then
echo $ip zookeeper start failed!
else
tag=1
fi
done
if [ $tag -eq 1 ]; then
echo zookeeper start success!
fi

sleep 3

####通过远程连接的方式启动各服务器的kafka,tag=1表示全部启动
tag=0
for ip in ${IPS[@]}
do

ssh root@$ip $KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
if [ $? -ne 0 ]; then
echo $ip kafka start failed!
else
tag=1
fi
done
if [ $tag -eq 1 ]; then
echo kafka start success!
fi

####通过远程连接的方式在其他的服务器上停止hbase
ssh root@node1>/dev/null 2>&1 <<eeooff
$HBASE_HOME/bin/stop-hbase.sh
exit
eeooff
echo hbase start success!

;;
stop)

####在当前服务器停止hive
$HIVE_HOME/bin/hiveservice.sh stop &>/dev/null
echo hive stop success!

####通过远程连接的方式停止各服务器的kafka,tag=1表示全部启动
tag=0
for ip in ${IPS[@]}
do

ssh root@$ip $KAFKA_HOME/bin/kafka-server-stop.sh &>/dev/null
if [ $? -eq 0 ]; then
tag=1
else
echo $ip kafka stop failed!
fi
done
if [ $tag -eq 1 ]; then
echo kafka stop success!
fi

####通过远程连接的方式在其他的服务器上停止hbase
ssh root@node1>/dev/null 2>&1 <<eeooff
$HBASE_HOME/bin/stop-hbase.sh
exit
eeooff
echo hbase stop success!

####在当前服务器停止flink集群
$FLINK_HOME/bin/stop-cluster.sh &>/dev/null
echo flink stop success!

####在当前服务器启动spark集群
$SPARK_HOME/sbin/stop-all.sh &>/dev/null
echo spark stop success!

####通过远程连接的方式停止各服务器的zookeeper,tag=1表示全部启动
tag=0
for ip in ${IPS[@]}
do

ssh root@$ip $ZK_HOME/bin/zkServer.sh stop &>/dev/null
if [ $? -eq 0 ]; then
tag=1
else
echo $ip zookeeper stop failed!
fi
done
if [ $tag -eq 1 ]; then
echo zookeeper stop success!
fi

####在当前服务器停止hadoop集群
$HADOOP_HOME/sbin/stop-all.sh &>/dev/null
echo hadoop stop success!

;;

status)

####查看所有集群的状态
$HADOOP_HOME/sbin/hadoop.sh status

;;

*)
echo "Usage:$0(start|stop|status)"
;;
esac

设置自启动:chkconfig --add hadoop 查看启动列表:chkconfig --list hadoop

开机启动运行如下:

参考网站:

经验分享 程序员 微信小程序 职场和发展