Spark支持local、Standalone和Cluster三种并行运行模式【参考:】。
- local,单机运行模式。
- Standalone,Spark自己构建的独立集群。
- Cluster,运行在Mesos/YARN/Kubernetes等集群环境中,从而可以让Spark与其他的应用协调资源。
参考:
Docker作为应用“集装箱”,提供了Swarm集群运行环境( 最新版为swarmkit,参考: ),也可以运行于Mesos/Kubernetes等集群环境中。
将Spark部署于Docker中,可以提供单机运行和手动的Standalone运行,也可以同时支持Swarm/Mesos/YARN/Kubernetes集群环境。
部署方式:
-
1、需要将Spark分为Master和Slave两种部署模式,创建两类Spark容器(或者创建为一个通用容器,通过启动参数判断节点将启动为Master还是Slave模式)。
-
2、通过启动参数环境变量将Spark启动参数传递进Docker。
-
3、在容器启动时,设置Spark节点启动,并且Slave节点自动连接到Master节点。
理论上,可以在一个Docker中启动多个Spark节点,但这会带来管理和负载均衡的复杂性。
建议将每一个Spark节点配置为一个Docker,从而将负载均衡的事交给Docker上的集群环境去做。
通过OpenStack for Docker、Rancher和SuperMap CloudManager等虚拟机和容器管理系统都可以设置和启动一个Spark的Docker或虚拟机的集群。