This is an automated email from the ASF dual-hosted git repository.

roryqi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-uniffle.git


The following commit(s) were added to refs/heads/master by this push:
     new 6be4ee04 [Improvement] Add optional environment variables (#187)
6be4ee04 is described below

commit 6be4ee04544b0a71ed33d1ada8c9505d65499077
Author: Chen Zhang <[email protected]>
AuthorDate: Mon Aug 29 12:01:39 2022 +0800

    [Improvement] Add optional environment variables (#187)
    
    ### What changes were proposed in this pull request?
    
    Added six optional environment variables:
    
    ```
    # RSS_HOME, RSS home directory (Default: parent directory of the script)
    # RSS_CONF_DIR, RSS configuration directory (Default: ${RSS_HOME}/conf)
    # HADOOP_CONF_DIR, Hadoop configuration directory (Default: 
${HADOOP_HOME}/etc/hadoop)
    # RSS_PID_DIR, Where the pid file is stored (Default: ${RSS_HOME})
    # RSS_LOG_DIR, Where log files are stored (Default: ${RSS_HOME}/logs)
    # RSS_IP, IP address Shuffle Server binds to on this node (Default: first 
non-loopback ipv4)
    ```
    
    ### Why are the changes needed?
    
    Simplify service deployment
    
    ### Does this PR introduce _any_ user-facing change?
    
    Added six optional environment variables.
    
     With the default environment variables, the behavior is the same as before 
this PR.
    
    
    ### How was this patch tested?
    
    local test
    
    Co-authored-by: zhangchen351 <[email protected]>
---
 bin/restart-coordinator.sh    | 11 ++++----
 bin/restart-shuffle-server.sh | 11 ++++----
 bin/rss-env.sh                | 13 ++++++---
 bin/start-coordinator.sh      | 46 +++++++++++-------------------
 bin/start-shuffle-server.sh   | 62 ++++++++++++++++++----------------------
 bin/stop-coordinator.sh       |  8 ++----
 bin/stop-shuffle-server.sh    |  8 ++----
 bin/utils.sh                  | 66 +++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 134 insertions(+), 91 deletions(-)

diff --git a/bin/restart-coordinator.sh b/bin/restart-coordinator.sh
index 992f22e4..0e700371 100644
--- a/bin/restart-coordinator.sh
+++ b/bin/restart-coordinator.sh
@@ -18,14 +18,13 @@
 #
 
 set -o pipefail
-set -e
+set -o nounset   # exit the script if you try to use an uninitialised variable
+set -o errexit   # exit the script if any statement returns a non-true return 
value
 
-COORDINATOR_HOME="$(
-  cd "$(dirname "$0")/.."
-  pwd
-)"
+source "$(dirname "$0")/utils.sh"
+load_rss_env
 
-cd $COORDINATOR_HOME
+cd "${RSS_HOME}"
 
 bash ./bin/stop-coordinator.sh
 sleep 3
diff --git a/bin/restart-shuffle-server.sh b/bin/restart-shuffle-server.sh
index dc1b537a..1572e463 100644
--- a/bin/restart-shuffle-server.sh
+++ b/bin/restart-shuffle-server.sh
@@ -18,14 +18,13 @@
 #
 
 set -o pipefail
-set -e
+set -o nounset   # exit the script if you try to use an uninitialised variable
+set -o errexit   # exit the script if any statement returns a non-true return 
value
 
-SHUFFLE_SERVER_HOME="$(
-  cd "$(dirname "$0")/.."
-  pwd
-)"
+source "$(dirname "$0")/utils.sh"
+load_rss_env
 
-cd $SHUFFLE_SERVER_HOME
+cd "${RSS_HOME}"
 
 bash ./bin/stop-shuffle-server.sh
 sleep 3
diff --git a/bin/rss-env.sh b/bin/rss-env.sh
index 96c59c6e..14824273 100644
--- a/bin/rss-env.sh
+++ b/bin/rss-env.sh
@@ -18,11 +18,16 @@
 #
 
 set -o pipefail
-set -e
+set -o nounset   # exit the script if you try to use an uninitialised variable
+set -o errexit   # exit the script if any statement returns a non-true return 
value
 
 JAVA_HOME=<java_home_dir>
 HADOOP_HOME=<hadoop_home_dir>
-XMX_SIZE="80g"
+XMX_SIZE="80g" # Shuffle Server JVM XMX size
 
-RUNNER="${JAVA_HOME}/bin/java"
-JPS="${JAVA_HOME}/bin/jps"
+# RSS_HOME, RSS home directory (Default: parent directory of the script)
+# RSS_CONF_DIR, RSS configuration directory (Default: ${RSS_HOME}/conf)
+# HADOOP_CONF_DIR, Hadoop configuration directory (Default: 
${HADOOP_HOME}/etc/hadoop)
+# RSS_PID_DIR, Where the pid file is stored (Default: ${RSS_HOME})
+# RSS_LOG_DIR, Where log files are stored (Default: ${RSS_HOME}/logs)
+# RSS_IP, IP address Shuffle Server binds to on this node (Default: first 
non-loopback ipv4)
diff --git a/bin/start-coordinator.sh b/bin/start-coordinator.sh
index 6caed9cc..7abc7baa 100644
--- a/bin/start-coordinator.sh
+++ b/bin/start-coordinator.sh
@@ -18,46 +18,34 @@
 #
 
 set -o pipefail
-set -e
+set -o nounset   # exit the script if you try to use an uninitialised variable
+set -o errexit   # exit the script if any statement returns a non-true return 
value
 
-COORDINATOR_HOME="$(
-  cd "$(dirname "$0")/.."
-  pwd
-)"
-CONF_FILE="./conf/coordinator.conf "
-MAIN_CLASS="org.apache.uniffle.coordinator.CoordinatorServer"
-
-cd $COORDINATOR_HOME
+source "$(dirname "$0")/utils.sh"
+load_rss_env
 
-source "${COORDINATOR_HOME}/bin/rss-env.sh"
-source "${COORDINATOR_HOME}/bin/utils.sh"
+cd "$RSS_HOME"
 
-if [ -z "$HADOOP_HOME" ]; then
-  echo "No env HADOOP_HOME."
-  exit 1
-fi
+COORDINATOR_CONF_FILE="${RSS_CONF_DIR}/coordinator.conf"
+JAR_DIR="${RSS_HOME}/jars"
+LOG_CONF_FILE="${RSS_CONF_DIR}/log4j.properties"
+LOG_PATH="${RSS_LOG_DIR}/coordinator.log"
 
-export JAVA_HOME
+MAIN_CLASS="org.apache.uniffle.coordinator.CoordinatorServer"
 
-HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
-HADOOP_DEPENDENCY=`$HADOOP_HOME/bin/hadoop classpath --glob`
+HADOOP_DEPENDENCY="$("$HADOOP_HOME/bin/hadoop" classpath --glob)"
 
 echo "Check process existence"
-is_jvm_process_running $JPS $MAIN_CLASS
+is_jvm_process_running "$JPS" $MAIN_CLASS
 
-JAR_DIR="./jars"
 CLASSPATH=""
 
 for file in $(ls ${JAR_DIR}/coordinator/*.jar 2>/dev/null); do
   CLASSPATH=$CLASSPATH:$file
 done
 
-if [ -z "$HADOOP_CONF_DIR" ]; then
-  echo "No env HADOOP_CONF_DIR."
-  exit 1
-fi
-
-echo "Using Hadoop from $HADOOP_HOME"
+mkdir -p "${RSS_LOG_DIR}"
+mkdir -p "${RSS_PID_DIR}"
 
 CLASSPATH=$CLASSPATH:$HADOOP_CONF_DIR:$HADOOP_DEPENDENCY
 JAVA_LIB_PATH="-Djava.library.path=$HADOOP_HOME/lib/native"
@@ -74,8 +62,6 @@ JVM_ARGS=" -server \
 
 ARGS=""
 
-LOG_CONF_FILE="./conf/log4j.properties"
-LOG_PATH="./logs/coordinator.log"
 if [ -f ${LOG_CONF_FILE} ]; then
   ARGS="$ARGS -Dlog4j.configuration=file:${LOG_CONF_FILE} 
-Dlog.path=${LOG_PATH}"
 else
@@ -83,7 +69,7 @@ else
   exit 1
 fi
 
-$RUNNER $ARGS $JVM_ARGS -cp $CLASSPATH $MAIN_CLASS --conf $CONF_FILE $@ &
+$RUNNER $ARGS $JVM_ARGS -cp $CLASSPATH $MAIN_CLASS --conf 
"$COORDINATOR_CONF_FILE" $@ &
 
 get_pid_file_name coordinator
-echo $! >$COORDINATOR_HOME/${pid_file}
+echo $! >${RSS_PID_DIR}/${pid_file}
diff --git a/bin/start-shuffle-server.sh b/bin/start-shuffle-server.sh
index 7542be4a..b82e23ba 100644
--- a/bin/start-shuffle-server.sh
+++ b/bin/start-shuffle-server.sh
@@ -18,56 +18,51 @@
 #
 
 set -o pipefail
-set -e
+set -o nounset   # exit the script if you try to use an uninitialised variable
+set -o errexit   # exit the script if any statement returns a non-true return 
value
 
-SHUFFLE_SERVER_HOME="$(
-  cd "$(dirname "$0")/.."
-  pwd
-)"
+source "$(dirname "$0")/utils.sh"
+load_rss_env
 
-cd $SHUFFLE_SERVER_HOME
+cd "$RSS_HOME"
 
-source "${SHUFFLE_SERVER_HOME}/bin/rss-env.sh"
-source "${SHUFFLE_SERVER_HOME}/bin/utils.sh"
+SHUFFLE_SERVER_CONF_FILE="${RSS_CONF_DIR}/server.conf"
+JAR_DIR="${RSS_HOME}/jars"
+LOG_CONF_FILE="${RSS_CONF_DIR}/log4j.properties"
+LOG_PATH="${RSS_LOG_DIR}/shuffle_server.log"
 
-if [ -z "$HADOOP_HOME" ]; then
-  echo "No env HADOOP_HOME."
+set +o nounset
+if [ -z "$XMX_SIZE" ]; then
+  echo "No env XMX_SIZE."
   exit 1
 fi
+echo "Shuffle Server JVM XMX size: ${XMX_SIZE}"
+if [ -n "$RSS_IP" ]; then
+  echo "Shuffle Server RSS_IP: ${RSS_IP}"
+fi
+set -o nounset
 
-export JAVA_HOME
-
-HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
-HADOOP_DEPENDENCY=`$HADOOP_HOME/bin/hadoop classpath --glob`
-
-CONF_FILE="./conf/server.conf "
 MAIN_CLASS="org.apache.uniffle.server.ShuffleServer"
 
+HADOOP_DEPENDENCY="$("$HADOOP_HOME/bin/hadoop" classpath --glob)"
+
 echo "Check process existence"
-is_jvm_process_running $JPS $MAIN_CLASS
+is_jvm_process_running "$JPS" $MAIN_CLASS
 
-JAR_DIR="./jars"
 CLASSPATH=""
 
 for file in $(ls ${JAR_DIR}/server/*.jar 2>/dev/null); do
   CLASSPATH=$CLASSPATH:$file
 done
 
-if [ -z "$HADOOP_CONF_DIR" ]; then
-  echo "No env HADOOP_CONF_DIR."
-  exit 1
-fi
-
-if [ -z "$XMX_SIZE" ]; then
-  echo "No jvm xmx size"
-  exit 1
-fi
-
-echo "Using Hadoop from $HADOOP_HOME"
+mkdir -p "${RSS_LOG_DIR}"
+mkdir -p "${RSS_PID_DIR}"
 
 CLASSPATH=$CLASSPATH:$HADOOP_CONF_DIR:$HADOOP_DEPENDENCY
 JAVA_LIB_PATH="-Djava.library.path=$HADOOP_HOME/lib/native"
 
+echo "class path is $CLASSPATH"
+
 JVM_ARGS=" -server \
           -Xmx${XMX_SIZE} \
           -Xms${XMX_SIZE} \
@@ -84,13 +79,10 @@ JVM_ARGS=" -server \
           -XX:+PrintGCDateStamps \
           -XX:+PrintGCTimeStamps \
           -XX:+PrintGCDetails \
-          -Xloggc:./logs/gc-%t.log"
+          -Xloggc:${RSS_LOG_DIR}/gc-%t.log"
 
 ARGS=""
 
-LOG_CONF_FILE="./conf/log4j.properties"
-LOG_PATH="./logs/shuffle_server.log"
-
 if [ -f ${LOG_CONF_FILE} ]; then
   ARGS="$ARGS -Dlog4j.configuration=file:${LOG_CONF_FILE} 
-Dlog.path=${LOG_PATH}"
 else
@@ -98,7 +90,7 @@ else
   exit 1
 fi
 
-$RUNNER $ARGS $JVM_ARGS $JAVA_LIB_PATH -cp $CLASSPATH $MAIN_CLASS --conf 
$CONF_FILE $@ &
+$RUNNER $ARGS $JVM_ARGS $JAVA_LIB_PATH -cp $CLASSPATH $MAIN_CLASS --conf 
"$SHUFFLE_SERVER_CONF_FILE" $@ &
 
 get_pid_file_name shuffle-server
-echo $! >$SHUFFLE_SERVER_HOME/${pid_file}
+echo $! >${RSS_PID_DIR}/${pid_file}
diff --git a/bin/stop-coordinator.sh b/bin/stop-coordinator.sh
index 09c989e4..5fe308a7 100644
--- a/bin/stop-coordinator.sh
+++ b/bin/stop-coordinator.sh
@@ -20,10 +20,8 @@
 set -o pipefail
 set -o nounset   # exit the script if you try to use an uninitialised variable
 set -o errexit   # exit the script if any statement returns a non-true return 
value
-set -e
 
-SCRIPT_DIR="$(cd "`dirname "$0"`"; pwd)"
-BASE_DIR="$(cd "`dirname "$0"`/.."; pwd)"
+source "$(dirname "$0")/utils.sh"
+load_rss_env
 
-source "$SCRIPT_DIR/utils.sh"
-common_shutdown "coordinator" ${BASE_DIR}
+common_shutdown "coordinator" "${RSS_PID_DIR}"
diff --git a/bin/stop-shuffle-server.sh b/bin/stop-shuffle-server.sh
index b6b84604..08265ff2 100644
--- a/bin/stop-shuffle-server.sh
+++ b/bin/stop-shuffle-server.sh
@@ -20,10 +20,8 @@
 set -o pipefail
 set -o nounset   # exit the script if you try to use an uninitialised variable
 set -o errexit   # exit the script if any statement returns a non-true return 
value
-set -e
 
-SCRIPT_DIR="$(cd "`dirname "$0"`"; pwd)"
-BASE_DIR="$(cd "`dirname "$0"`/.."; pwd)"
+source "$(dirname "$0")/utils.sh"
+load_rss_env
 
-source "$SCRIPT_DIR/utils.sh"
-common_shutdown "shuffle-server" ${BASE_DIR}
+common_shutdown "shuffle-server" "${RSS_PID_DIR}"
diff --git a/bin/utils.sh b/bin/utils.sh
index 82922121..a7c5d42d 100644
--- a/bin/utils.sh
+++ b/bin/utils.sh
@@ -132,3 +132,69 @@ function is_jvm_process_running {
   fi
 
 }
+
+#---
+# load_rss_env: Export RSS environment variables
+#---
+function load_rss_env {
+  set -o allexport
+
+  # find rss-env.sh
+  set +o nounset
+  if [ -f "${RSS_CONF_DIR}/rss-env.sh" ]; then
+     RSS_ENV_SH="${RSS_CONF_DIR}/rss-env.sh"
+  elif [ -f "${RSS_HOME}/bin/rss-env.sh" ]; then
+     RSS_ENV_SH="${RSS_HOME}/bin/rss-env.sh"
+  else
+     RSS_ENV_SH="$(cd "$(dirname "$0")"; pwd)/rss-env.sh"
+  fi
+  set -o nounset
+  echo "Using rss_env.sh: ${RSS_ENV_SH}"
+
+  # export rss-env.sh
+  source "${RSS_ENV_SH}"
+
+  # check
+  if [ -z "$JAVA_HOME" ]; then
+    echo "No env JAVA_HOME."
+    exit 1
+  fi
+  if [ -z "$HADOOP_HOME" ]; then
+    echo "No env HADOOP_HOME."
+    exit 1
+  fi
+
+  # export default value
+  set +o nounset
+  if [ -z "$RSS_HOME" ]; then
+    RSS_HOME="$(cd "$(dirname "$0")/.."; pwd)"
+  fi
+  if [ -z "$RSS_CONF_DIR" ]; then
+    RSS_CONF_DIR="${RSS_HOME}/conf"
+  fi
+  if [ -z "$HADOOP_CONF_DIR" ]; then
+    HADOOP_CONF_DIR="${HADOOP_HOME}/etc/hadoop"
+  fi
+  if [ -z "$RSS_LOG_DIR" ]; then
+    RSS_LOG_DIR="${RSS_HOME}/logs"
+  fi
+  if [ -z "$RSS_PID_DIR" ]; then
+    RSS_PID_DIR="${RSS_HOME}"
+  fi
+  set -o nounset
+
+  RUNNER="${JAVA_HOME}/bin/java"
+  JPS="${JAVA_HOME}/bin/jps"
+
+  # print
+  echo "Using Java from ${JAVA_HOME}"
+  echo "Using Hadoop from ${HADOOP_HOME}"
+  echo "Using RSS from ${RSS_HOME}"
+  echo "Using RSS conf from ${RSS_CONF_DIR}"
+  echo "Using Hadoop conf from ${HADOOP_CONF_DIR}"
+  echo "Write log file to ${RSS_LOG_DIR}"
+  echo "Write pid file to ${RSS_PID_DIR}"
+
+  set +o allexport
+}
+

Reply via email to