1. spark 可以有三种安装部署模式 ,mesos 集群 yarn 集群 或者 standalone 模式
2. spark 的部署模式有两种 client模式(默认)和cluster模式
client模式是driver直接在spark-submit进程中启动,将本地作为外部客户端
cluster模式 是在worker节点部署你的driver, 如果你的机器跟cluster集群距离较远,通常情况下用cluster模式减少drivers和executors的网络延迟。cluster模式目前不支持独立集群(standalone)、 mesos集群以及python应用程序。
在client模式中,driver启动进程与 客户端提交应用程序所在的进程是同一个进程。然而,在cluster模式中,driver在集群的某个worker进程中启动,只有客户端进程完成了提交任务,它不会等到应用程序完成就会退出。
3. --master的参数
Master URL | Meaning |
local | 用一个worker线程本地运行Spark |
local[K] | 用k个worker线程本地运行Spark(理想情况下,设置这个值为你的机器的核数) |
local | 用尽可能多的worker线程本地运行Spark |
spark://HOST:PORT | 连接到给定的Spark独立部署集群master。端口必须是master配置的端口,默认是7077 |
mesos://HOST:PORT | 连接到给定的mesos集群 |
yarn-client | 以client模式连接到Yarn集群。群集位置将基于通过HADOOP_CONF_DIR变量找到 |
yarn-cluster | 以cluster模式连接到Yarn集群。群集位置将基于通过HADOOP_CONF_DIR变量找到 |
集群启动脚本
为了用启动脚本启动Spark独立集群,你应该在你的Spark目录下建立一个名为conf/slaves的文件,这个文件必须包含所有你要启动的Spark worker所在机器的主机名,一行一个。如果 conf/slaves不存在,启动脚本默认为单个机器(localhost),这台机器对于测试是有用的。注意,master机器通过ssh访问所有的worker。在默认情况下,SSH是并行运行,需要设置无密码(采用私有密钥)的访问。 如果你没有设置为无密码访问,你可以设置环境变量SPARK_SSH_FOREGROUND,为每个worker提供密码。
一旦你设置了这个文件,你就可以通过下面的shell脚本启动或者停止你的集群。
- sbin/start-master.sh:在机器上启动一个master实例
- sbin/start-slaves.sh:在每台机器上启动一个slave实例
- sbin/start-all.sh:同时启动一个master实例和所有slave实例
- sbin/stop-master.sh:停止master实例
- sbin/stop-slaves.sh:停止所有slave实例
- sbin/stop-all.sh:停止master实例和所有slave实例
注意,这些脚本必须在你的Spark master运行的机器上执行,而不是在你的本地机器上面。