#!/bin/bash # Source environment file to make sure HADOOP_HOME variable is available. source /etc/environment # Define the user that should run this script. SCRIPT_USER=flink # The path where Apache Flink is installed. INSTALLATION_PATH="{{ installation_path }}" # The full path of the lock file to use. LOCKFILE="$INSTALLATION_PATH/flink/flink-lock" # The command that will start Apache Flink. START_COMMAND="$INSTALLATION_PATH/flink/bin/yarn-session.sh -n {{ number_of_taskmanagers }} -tm {{ ram_per_task_manager }}" # The command that will stop Apache Flink. Note that, HADOOP_HOME home variable should be set outside from this script and # before Flink's deployment. STOP_COMMAND="$HADOOP_HOME/bin/yarn application --kill" start(){ sudo -E -u $SCRIPT_USER nohup $START_COMMAND > /dev/null & RETVAL=$? [ $RETVAL -eq 0 ] && $(sudo -u $SCRIPT_USER touch $LOCKFILE) return $RETVAL } stop(){ id=$(sudo -u $SCRIPT_USER $HADOOP_HOME/bin/yarn application --list | grep "Flink session" | cut -f1) sudo -E -u $SCRIPT_USER nohup $STOP_COMMAND $id > /dev/null & RETVAL=$? [ $RETVAL -eq 0 ] && $(sudo -u $SCRIPT_USER rm -f $LOCKFILE) return $RETVAL } restart(){ stop start } RETVAL=0 case "$1" in start) start ;; stop) stop ;; restart|reload|force-reload) restart ;; condrestart) [ -f $LOCKFILE ] && restart || : ;; status) [ -f $LOCKFILE ] && echo "Apache Flink is running." || echo "Apache Flink is not running." RETVAL=$? ;; *) echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}" RETVAL=1 esac exit $RETVAL