繁体   English   中英

如何使用start-all.sh启动使用不同SPARK_HOME(而不是Master)的独立Worker?

[英]How to use start-all.sh to start standalone Worker that uses different SPARK_HOME (than Master)?

我已经在两台机器上安装了spark 2.1.1,但是安装在相对的位置不同,即在一台机器上,我已将其安装在NTFS驱动器上的某处,另一台机器上,将其已安装在ext4驱动器上。 我正在尝试通过在1台计算机上具有1个Master和1个从属设备,在另一台计算机上具有1个从属设备的独立模式启动具有2个从属和一个主机的群集。

当我尝试通过主节点上的start-all.sh脚本启动此群集时,出现以下错误:-

192.168.1.154: bash: line 0: cd: /home/<somePath>/spark-2.1.1-bin-hadoop2.7: No such file or directory

我在各个bashrc文件中设置了正确的SPARK_HOME 以下是我的从属文件(在1个主设备+ 1个从属计算机中)

localhost
192.168.1.154

我可以通过ssh远程登录到1个从属计算机。 我可以在每台机器上单独运行Spark集群。

我的理解是,当我尝试通过start-all.sh脚本从我的主机远程启动从属start-all.sh它试图转到主节点上安装了spark的位置,但作为从属节点上,火花安装到了另一个位置位置,它失败。 谁能告诉我如何解决这个问题?

start-all.sh中,您可以找到以下内容:

if [ -z "${SPARK_HOME}" ]; then
  export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi

# Load the Spark configuration
. "${SPARK_HOME}/sbin/spark-config.sh"

# Start Master
"${SPARK_HOME}/sbin"/start-master.sh

# Start Workers
"${SPARK_HOME}/sbin"/start-slaves.sh

这与独立主机上的Spark安装无关。 start-all.sh仅使用全局定义的任何SPARK_HOME ,并将其在群集的所有节点中使用,用于独立的master和worker。

在您的情况下,我建议编写一个自定义启动脚本,该脚本将根据各自的SPARK_HOME env var启动独立的Master和worker。

start-slaves.sh在此处提供源)仅执行以下操作:

cd "${SPARK_HOME}" \; "${SPARK_HOME}/sbin/start-slave.sh" "spark://$SPARK_MASTER_HOST:$SPARK_MASTER_PORT"

因此,并没有发生太多魔术,而是要ssh到每个节点并执行命令行。


我甚至会为此使用Ansible

您应该检查〜/ .bashr。 您可以在下面看到我的bashrc:

export JAVA_HOME=/usr/local/java/jdk1.8.0_121
export JRE_HOME=$JAVA_HOME/jre
export SCALA_HOME=/usr/local/src/scala/scala-2.12.1
export SPARK_HOME=/usr/local/spark/2.1.0
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin

最后,您必须更新您的bashrc环境:

source ~/.bashrc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM