一、前置准备

CentOS7、jdk1.8、flink-1.10.1、hadoop-2.7.7、zookeeper-3.5.7


二、脚本源码

#!/bin/bash

USAGE="使用方法:sh ha-flink.sh start/stop/status"
if [ $# -ne 1 ];then
echo $USAGE
exit 1
fi

SHELL_CALL=/home/xiaokang/bin/call-cluster.sh
SHELL_HADOOP=/home/xiaokang/bin/ha-hadoop.sh
FLINK_HOME=/opt/software/flink-1.10.1
NODES=("hadoop01" "hadoop02")

case $1 in
"start")
#开始启动ha-flink集群
for NODE in ${NODES[*]};do
echo "--------$NODE启动ha-flink集群--------"
if [ "hadoop01" = $NODE ];then
ssh $NODE "$SHELL_HADOOP start && $FLINK_HOME/bin/start-cluster.sh && $FLINK_HOME/bin/historyserver.sh start"
fi
done
;;
"stop")
#开始停止ha-flink集群
for NODE in ${NODES[*]};do
echo "--------$NODE停止ha-flink集群--------"
if [ "hadoop01" = $NODE ];then
ssh $NODE "$FLINK_HOME/bin/stop-cluster.sh && $FLINK_HOME/bin/historyserver.sh stop"
fi
done
#停止ha-hadoop集群以及zookeeper集群
$SHELL_HADOOP stop
;;
"status")
echo "--------查看ha-flink集群进程信息"
$SHELL_CALL jps
;;
*)
echo $USAGE
;;
echo "----------------------------------------------------------------------------------------"

三、测试使用

# 修改脚本权限
[xiaokang@hadoop01 bin]$ chmod 777 ha-flink.sh

执行方式:

# 方式一
[xiaokang@hadoop01 bin]$ ./ha-flink.sh start
# 方式二
[xiaokang@hadoop01 bin]$ sh ha-flink.sh start
# 方式三
# 1.将shell脚本所在目录配置为环境变量(/etc/profile),记得source生效
export SHELL_HOME=/home/xiaokang/bin
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZOOKEEPER_HOME}/bin:${HIVE_HOME}/bin:${HBASE_HOME}/bin:${KYLIN_HOME}/bin:${KAFKA_HOME}/bin:${SCALA_HOME}/bin:${SCALA_HOME}/sbin:${SPARK_HOME}/bin:${SHELL_HOME}/:$PATH
# 2.在任意目录都可以使用自己编写的shell脚本
[xiaokang@hadoop01 ~]$ ha-flink.sh start

使用脚本进行启动和查看进程测试