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
+}
+