Apache Spark 部署模式
Spark 部署模式主要有5种:
- Local模式(单机模式)
- Standalone模式(使用Spark自带的简单集群管理器)
- YARN模式(使用YARN作为集群管理器)
- Mesos模式(使用Mesos作为集群管理器)
- Kubernetes(在Kubernetes上运行Spark,Running Spark on Kubernetes)
其中,最简单就是单机本地模式(Local模式)- 常用于本地开发测试,本地还分为local单线程和local-cluster多线程。
Standalone模式 - 类似于 MapReduce 1.0所采用的模式,内部实现了容错性和资源管理。
YARN模式和Mesos模式,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比如MapReduce共用一个集群资源,最大的好处是降低运维成本和提高资源利用率(资源按需分配)。
Apache Spark运行模式
在实际应用中,Spark应用程序的运行模式取决于传递给 SparkContext的MASTER环境变量的值,个别模式还需要依赖辅助的程序接口来配合使用,目前所支持的MASTER环境变量由特定的字符串或URL所组成,如下所示。
Master URL可以是以下任一种形式:
* local 使用一个Worker线程本地化运行SPARK(完全不并行);
* local[*] 使用逻辑CPU个数数量的线程来本地化运行Spark
* local[K] 使用K个Worker线程本地化运行Spark(理想情况下,K应该根据运行机器的CPU核数设定)
* spark://HOST:PORT 连接到指定的Spark standalone master,默认端口是7077。
* yarn-client 以客户端模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR 环境变量中找到。
* yarn-cluster 以集群模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR 环境变量中找到。
* mesos://HOST:PORT 连接到指定的Mesos集群。默认接口是5050。
Local模式,顾名思义就是在本地运行,如果不加任何配置,Spark默认设置为Local模式。
以SparkPi为例,Local模式下的应用程序的启动命令如下:
bin/run-example SparkPi local
在SparkPi 代码的具体实现中,是根据用户传入的参数来选择运行模式的。
如果需要自己在代码中指定运行模式,可以通过在代码中配置Master为Local来实现,如以下程序所示。
当然,为了使应用程序能够更灵活地在各种部署环境下使用,不建议把与运行环境相关的设置直接在代码中写死。
参考链接:
Launching on a Cluster
https://spark.apache.org/docs/latest/
评论留言