使用Apache Mesos部署Spark点击这里可看全文
文章目录
在硬件集群上使用Apache Mesos管理,可以使Spark运行起来。**注意:Apache Mesos支持已经在Apache Spark 3.2.0中被弃用,将在未来的版本中删除。**
部署Spark与Mesos的优势包括:
- 在Spark和其他框架之间进行动态分配资源
- 将资源按比例分配给多个Spark实例
- 安全性
安全性
默认情况下,安全功能(如身份验证)是未启用的。在部署一个对外开放或不受信任网络的集群时,为了防止未经授权的应用程序在集群上运行,确保对集群的访问受到安全保护非常重要。在运行Spark之前,请参阅Spark安全性文档以及本文档中的相关安全部分。
工作原理
在独立集群部署中,下图中的集群管理器是一个Spark主节点实例。而在使用Mesos时,Mesos主节点会取代Spark主节点作为集群管理器。
当驱动程序创建作业并开始发出任务进行调度时,Mesos决定哪些机器处理哪些任务。因为它在调度这些短暂任务时考虑了其他框架,所以多个框架可以在同一集群上共存,而无需静态地划分资源。
要开始使用Mesos安装和通过Mesos部署Spark作业,请按照以下步骤操作。
安装Mesos
Spark 3.5.0适用于Mesos 1.0.0或更新版本,并且不需要任何特殊的Mesos补丁。文件和基于环境的密钥支持需要Mesos 1.3.0或更新版本。
如果您已经运行了一个Mesos集群,可以跳过此步骤。
否则,将Spark与Mesos一起安装与为其他框架安装Mesos没有区别。您可以从源代码安装Mesos,也可以使用预编译软件包进行安装。
从源代码安装
要从源代码安装Apache Mesos,请按照以下步骤操作:
- 从镜像下载Mesos发行版。
- 按照Mesos入门页面上的说明进行编译和安装。
注意:如果您希望在系统默认路径之外(例如,如果您没有管理员权限来安装),请在configure命令中使用
--prefix
选项指定安装路径,例如:--prefix=/home/me/mesos
。默认情况下,安装路径为/usr/local
。
第三方软件包
Apache Mesos项目只发布源代码版本,而不提供二进制软件包。但是,其他第三方项目发布了二进制软件包,这些软件包可能有助于安装Mesos。
其中一个项目是Mesosphere。要使用Mesosphere提供的二进制版本安装Mesos,请按照以下步骤操作:
- 从下载页面下载Mesos安装包。
- 按照他们的安装和配置说明进行操作。
Mesosphere的安装文档建议设置ZooKeeper以处理Mesos主节点故障转移,但也可以在没有ZooKeeper的情况下运行Mesos,只需使用单个主节点即可。
验证
要验证Mesos集群是否准备好与Spark一起使用,请访问Mesos主节点的Web界面(端口为5050),确认“Agents”选项卡中存在所有预期的机器。
连接Spark到Mesos
要使用Mesos调度Spark作业,您需要在Mesos可访问的位置上有一个Spark二进制软件包,并且需要配置Spark驱动程序以连接到Mesos。
或者,您还可以在所有Mesos代理中安装Spark,并将spark.mesos.executor.home
(默认为SPARK_HOME)配置为指向该位置。
连接到Mesos的身份验证
当启用Mesos Framework身份验证时,需要提供一个主体和密钥,以便Spark对Mesos进行身份验证。每个Spark作业将注册为一个独立的Framework。
根据部署环境的不同,您可以选择创建一组共享给所有用户的Framework凭证,或者为每个用户创建Framework凭证。创建和管理Framework凭证应遵循Mesos身份验证文档。
可以通过多种方式指定Framework凭证,具体取决于部署环境和安全要求。最简单的方法是直接在Spark配置中指定spark.mesos.principal
和spark.mesos.secret
的值。或者,您还可以间接地通过指定spark.mesos.principal.file
和spark.mesos.secret.file
来指定这些值,这些设置指向包含主体和密钥的文件。这些文件必须是UTF-8编码的纯文本文件。通过适当的文件所有权、模式/访问控制列表,可以更安全地指定这些凭证。
此外,如果您更喜欢使用环境变量,也可以通过环境变量来指定上述所有内容。环境变量的名称只是将配置设置转换为大写,并用下划线替换点号,例如:SPARK_MESOS_PRINCIPAL
。
凭证规范的优先顺序如下所示。如果您指定多种获取凭证的方式,则Spark将使用找到的第一个有效值,忽略后续的值:
spark.mesos.principal
配置设置SPARK_MESOS_PRINCIPAL
环境变量spark.mesos.principal.file
配置设置SPARK_MESOS_PRINCIPAL_FILE
环境变量
对于密钥,也适用相同的顺序。基本上,我们更喜欢直接指定配置而不是通过文件间接指定配置,并且我们更喜欢使用配置设置而不是环境变量。
在安全套接字上运行Mesos集群
如果要将Spark应用程序部署到以安全模式运行的Mesos集群中,需要设置一些环境变量。
LIBPROCESS_SSL_ENABLED=true
:启用SSL通信LIBPROCESS_SSL_VERIFY_CERT=false
:验证SSL证书LIBPROCESS_SSL_KEY_FILE=pathToKeyFile.key
:密钥文件路径LIBPROCESS_SSL_CERT_FILE=pathToCRTFile.crt
:证书文件路径
所有选项的详细说明可以在这里找到。
然后,按照下面的“客户端模式”或“集群模式”的描述进行提交。
上传Spark软件包
当Mesos首次在Mesos代理上运行任务时,该