#!/bin/bash -eu # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ## Initialization script for druid nodes ## Runs druid nodes as a daemon ## Environment Variables used by this script - ## DRUID_LIB_DIR - directory having druid jar files, default=lib ## DRUID_CONF_DIR - directory having druid config files, default=conf/druid ## DRUID_LOG_DIR - directory used to store druid logs, default=log ## DRUID_PID_DIR - directory used to store pid files, default=var/druid/pids ## HADOOP_CONF_DIR - directory used to store hadoop config files usage="Usage: node.sh nodeType (start|stop|status)" if [ $# -le 1 ]; then echo $usage exit 1 fi nodeType=$1 shift command=$1 LIB_DIR="${DRUID_LIB_DIR:=lib}" CONF_DIR="${DRUID_CONF_DIR:=conf/druid}" LOG_DIR="${DRUID_LOG_DIR:=log}" PID_DIR="${DRUID_PID_DIR:=var/druid/pids}" pid=$PID_DIR/$nodeType.pid case $command in (start) if [ -f $pid ]; then if kill -0 `cat $pid` > /dev/null 2>&1; then echo $nodeType node running as process `cat $pid`. Stop it first. exit 1 fi fi if [ ! -d "$PID_DIR" ]; then mkdir -p $PID_DIR; fi if [ ! -d "$LOG_DIR" ]; then mkdir -p $LOG_DIR; fi JAVA=java if [ "$JAVA_HOME" != "" ]; then JAVA=$JAVA_HOME/bin/java fi nohup $JAVA `cat $CONF_DIR/$nodeType/jvm.config | xargs` -cp $CONF_DIR/_common:$CONF_DIR/$nodeType:$LIB_DIR/*:$HADOOP_CONF_DIR org.apache.druid.cli.Main server $nodeType >> $LOG_DIR/$nodeType.log 2>&1 & nodeType_PID=$! echo $nodeType_PID > $pid echo "Started $nodeType node ($nodeType_PID)" ;; (stop) if [ -f $pid ]; then TARGET_PID=`cat $pid` if kill -0 $TARGET_PID > /dev/null 2>&1; then echo Stopping process `cat $pid`... kill $TARGET_PID else echo No $nodeType node to stop fi rm -f $pid else echo No $nodeType node to stop fi ;; (status) if [ -f $pid ]; then if kill -0 `cat $pid` > /dev/null 2>&1; then echo RUNNING exit 0 else echo STOPPED fi else echo STOPPED fi ;; (*) echo $usage exit 1 ;; esac