Skip to content
Snippets Groups Projects
Commit 0dc868e7 authored by Kousuke Saruta's avatar Kousuke Saruta Committed by Patrick Wendell
Browse files

[SPARK-3584] sbin/slaves doesn't work when we use password authentication for SSH

Author: Kousuke Saruta <sarutak@oss.nttdata.co.jp>

Closes #2444 from sarutak/slaves-scripts-modification and squashes the following commits:

eff7394 [Kousuke Saruta] Improve the description about Cluster Launch Script in docs/spark-standalone.md
7858225 [Kousuke Saruta] Modified sbin/slaves to use the environment variable "SPARK_SSH_FOREGROUND" as a flag
53d7121 [Kousuke Saruta] Merge branch 'master' of git://git.apache.org/spark into slaves-scripts-modification
e570431 [Kousuke Saruta] Added a description for SPARK_SSH_FOREGROUND variable
7120a0c [Kousuke Saruta] Added a description about default host for sbin/slaves
1bba8a9 [Kousuke Saruta] Added SPARK_SSH_FOREGROUND flag to sbin/slaves
88e2f17 [Kousuke Saruta] Merge branch 'master' of git://git.apache.org/spark into slaves-scripts-modification
297e75d [Kousuke Saruta] Modified sbin/slaves not to export HOSTLIST
parent ff637c93
No related branches found
No related tags found
No related merge requests found
...@@ -23,6 +23,7 @@ conf/*.cmd ...@@ -23,6 +23,7 @@ conf/*.cmd
conf/*.properties conf/*.properties
conf/*.conf conf/*.conf
conf/*.xml conf/*.xml
conf/slaves
docs/_site docs/_site
docs/api docs/api
target/ target/
......
...@@ -19,6 +19,7 @@ log4j.properties ...@@ -19,6 +19,7 @@ log4j.properties
log4j.properties.template log4j.properties.template
metrics.properties.template metrics.properties.template
slaves slaves
slaves.template
spark-env.sh spark-env.sh
spark-env.cmd spark-env.cmd
spark-env.sh.template spark-env.sh.template
......
File moved
...@@ -62,7 +62,12 @@ Finally, the following configuration options can be passed to the master and wor ...@@ -62,7 +62,12 @@ Finally, the following configuration options can be passed to the master and wor
# Cluster Launch Scripts # Cluster Launch Scripts
To launch a Spark standalone cluster with the launch scripts, you need to create a file called `conf/slaves` in your Spark directory, which should contain the hostnames of all the machines where you would like to start Spark workers, one per line. The master machine must be able to access each of the slave machines via password-less `ssh` (using a private key). For testing, you can just put `localhost` in this file. To launch a Spark standalone cluster with the launch scripts, you should create a file called conf/slaves in your Spark directory,
which must contain the hostnames of all the machines where you intend to start Spark workers, one per line.
If conf/slaves does not exist, the launch scripts defaults to a single machine (localhost), which is useful for testing.
Note, the master machine accesses each of the worker machines via ssh. By default, ssh is run in parallel and requires password-less (using a private key) access to be setup.
If you do not have a password-less setup, you can set the environment variable SPARK_SSH_FOREGROUND and serially provide a password for each worker.
Once you've set up this file, you can launch or stop your cluster with the following shell scripts, based on Hadoop's deploy scripts, and available in `SPARK_HOME/bin`: Once you've set up this file, you can launch or stop your cluster with the following shell scripts, based on Hadoop's deploy scripts, and available in `SPARK_HOME/bin`:
......
...@@ -44,7 +44,9 @@ sbin="`cd "$sbin"; pwd`" ...@@ -44,7 +44,9 @@ sbin="`cd "$sbin"; pwd`"
# If the slaves file is specified in the command line, # If the slaves file is specified in the command line,
# then it takes precedence over the definition in # then it takes precedence over the definition in
# spark-env.sh. Save it here. # spark-env.sh. Save it here.
HOSTLIST="$SPARK_SLAVES" if [ -f "$SPARK_SLAVES" ]; then
HOSTLIST=`cat "$SPARK_SLAVES"`
fi
# Check if --config is passed as an argument. It is an optional parameter. # Check if --config is passed as an argument. It is an optional parameter.
# Exit if the argument is not a directory. # Exit if the argument is not a directory.
...@@ -67,23 +69,34 @@ fi ...@@ -67,23 +69,34 @@ fi
if [ "$HOSTLIST" = "" ]; then if [ "$HOSTLIST" = "" ]; then
if [ "$SPARK_SLAVES" = "" ]; then if [ "$SPARK_SLAVES" = "" ]; then
export HOSTLIST="${SPARK_CONF_DIR}/slaves" if [ -f "${SPARK_CONF_DIR}/slaves" ]; then
HOSTLIST=`cat "${SPARK_CONF_DIR}/slaves"`
else
HOSTLIST=localhost
fi
else else
export HOSTLIST="${SPARK_SLAVES}" HOSTLIST=`cat "${SPARK_SLAVES}"`
fi fi
fi fi
# By default disable strict host key checking # By default disable strict host key checking
if [ "$SPARK_SSH_OPTS" = "" ]; then if [ "$SPARK_SSH_OPTS" = "" ]; then
SPARK_SSH_OPTS="-o StrictHostKeyChecking=no" SPARK_SSH_OPTS="-o StrictHostKeyChecking=no"
fi fi
for slave in `cat "$HOSTLIST"|sed "s/#.*$//;/^$/d"`; do for slave in `echo "$HOSTLIST"|sed "s/#.*$//;/^$/d"`; do
ssh $SPARK_SSH_OPTS "$slave" $"${@// /\\ }" \ if [ -n "${SPARK_SSH_FOREGROUND}" ]; then
2>&1 | sed "s/^/$slave: /" & ssh $SPARK_SSH_OPTS "$slave" $"${@// /\\ }" \
if [ "$SPARK_SLAVE_SLEEP" != "" ]; then 2>&1 | sed "s/^/$slave: /"
sleep $SPARK_SLAVE_SLEEP else
fi ssh $SPARK_SSH_OPTS "$slave" $"${@// /\\ }" \
2>&1 | sed "s/^/$slave: /" &
fi
if [ "$SPARK_SLAVE_SLEEP" != "" ]; then
sleep $SPARK_SLAVE_SLEEP
fi
done done
wait wait
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment