本章探讨Spark的基础架构,了解这些有助于部署和运行Spark应用程序
- 集群部署的选择
- Spark的不同集群管理者
- 部署注意事项以及配置部署
在大多数情况下,Spark在各种集群管理器下的工作模式类似。然而,定制集群管理器就需要了解每个集群管理系统的工作原理,最困难的部分是选择集群管理器(或选择托管服务)
Spark有三个官方支持的集群管理器
- Standalone模式
- Hadoop Yarn模式
- Apache Mesos
这些集群管理器维护一组机器用于部署你的Spark应用程序,这些集群管理器对集群的管理模式各不相同
在哪里部署Spark集群
关于在哪里部署Spark集群,有两个选择:部署在本地集群或公共云中,这个选择很重要
Yarn集群管理器
Hadoop Yarn是支持作业调度和集群资源管理的框架,Spark经常被误认为是Hadoop生态系统的一部分,但事实上,Spark与Hadoop几乎没有关系,虽然Spark本身支持Hadoop Yarn集群管理器,但它并不需要Hadoop的支持
通过在spark-submit命令行参数中将master节点指定为Yarn,你可以在Hadoop Yarn上运行Spark作业,就像使用Standalone模式一样,你可以根据需求调整集群配置,由于Hadoop Yarn是大量不同执行框架的通用调度器,因此配置的参数数量自然也多于Spark的Standalone模式
提交应用程序
将应用程序提交给Yarn时,与其他部署的核心区别在于,--master需要指定的是yarn而不是master节点的IP(在Standalone模式中需要master节点IP)。Spark将使用环境变量HADOOP_CONF_DIR或YARN_CONF_DIR来查找Yarn配置文件,在将这些环境变量设置为Hadoop的安装目录后,就可以运行spark-submit来提交应用程序
有两种部署模式可用于在Yarn上启动Spark
在Yarn应用程序上配置Spark
将Spark部署为Yarn应用程序需要你了解Spark应用程序的各种不同配置及其含义。
Hadoop配置
如果想使用Spark从HDFS进行读写,则需要在Spark的classpath中包含两个Hadoop配置文件
Yarn的应用程序属性
有很多与hadoop相关的配置,也有很多与Spark不太相关的配置,他们是为了运行或保护Yarn而同时会涉及Spark的运行方式