Spark 集群部署模式概述

Posted 顧棟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark 集群部署模式概述相关的知识,希望对你有一定的参考价值。

Cluster Mode Overview

http://spark.apache.org/docs/latest/cluster-overview.html

本文档简要概述了 Spark 如何在集群上运行,以便更容易地理解所涉及的组件。 通读 应用程序提交指南 以了解如何在集群上启动应用程序。

Components

Spark 应用程序作为集群上的独立进程集运行,由主程序(称为driver program)中的SparkContext对象协调。

具体来说,为了在集群上运行,SparkContext 可以连接到多种类型的 集群管理器(Spark 自己的独立集群管理器、Mesos 或 YARN),它们在应用程序之间分配资源。 连接后,Spark 会在集群中的节点上获取 executor,这些进程为您的应用程序运行计算和存储数据。 接下来,它将您的应用程序代码(由传递给 SparkContext 的 JAR 或 Python 文件定义)发送到执行程序。 最后,SparkContext 将 tasks 发送给执行程序以运行。

关于这个架构,有几个有用的地方需要注意:

  1. 每个应用程序都有自己的执行程序进程,这些进程在整个应用程序的持续时间内保持运行并在多个线程中运行任务。 这有利于在调度端(每个驱动程序调度自己的任务)和执行端(来自不同应用程序的任务在不同的 JVM 中运行)将应用程序彼此隔离。 但是,这也意味着如果不将数据写入外部存储系统,就无法在不同的 Spark 应用程序(SparkContext 的实例)之间共享数据。
  2. Spark 与底层集群管理器无关。 只要它可以获取 executor 进程,并且这些进程相互通信,即使在也支持其他应用程序(例如 Mesos/YARN)的集群管理器上运行它也相对容易。
  3. 驱动程序必须在其整个生命周期内侦听并接受来自其执行程序的传入连接(例如,请参阅 spark.driver.port in the network config section)。 因此,驱动程序必须可从工作节点进行网络寻址。
  4. 因为驱动程序在集群上调度任务,所以它应该在工作节点附近运行,最好在同一个局域网上。 如果你想远程向集群发送请求,最好向驱动程序打开一个 RPC 并让它从附近提交操作,而不是运行远离工作节点的驱动程序。

Cluster Manager Types

系统目前支持多种集群管理器:

  • Standalone – Spark 附带的一个简单的集群管理器,可以轻松设置集群。
  • Apache Mesos – 一个通用的集群管理器,也可以运行 Hadoop MapReduce 和服务应用程序。
  • Hadoop YARN – Hadoop 2 中的资源管理器。
  • Kubernetes –一个用于自动化部署、扩展和管理容器化应用程序的开源系统。

存在第三方项目(不受 Spark 项目支持)添加对 Nomad 作为集群管理器的支持。

Submitting Applications

可以使用 spark-submit 脚本将应用程序提交到任何类型的集群。 应用程序提交指南 描述了如何执行此操作。

Monitoring

每个驱动程序都有一个 Web UI,通常在端口 4040 上,显示有关正在运行的任务、执行程序和存储使用情况的信息。 只需在 Web 浏览器中转到 http://<driver-node>:4040 即可访问此 UI。 监控指南 还描述了其他监控选项。

Job Scheduling

Spark 可以控制across应用程序(在集群管理器级别)和within应用程序(如果在同一个 SparkContext 上发生多个计算)的资源分配。 作业调度概述 更详细地描述了这一点。

Glossary

下表总结了您将看到的用于指代集群概念的术语:

TermMeaning
Application基于 Spark 构建的用户程序。 由集群上的driver programexecutors组成。
Application jar包含用户的 Spark 应用程序的 jar。 在某些情况下,用户会想要创建一个“uber jar”,其中包含他们的应用程序及其依赖项。 用户的 jar 不应包含 Hadoop 或 Spark 库,但是,这些将在运行时添加。
Driver program运行应用程序的 main() 函数并创建 SparkContext 的进程
Cluster manager用于获取集群资源的外部服务(例如独立管理器、Mesos、YARN)
Deploy mode区分驱动程序进程运行的位置。 在“cluster”模式下,框架在集群内部启动驱动程序。 在“client”模式下,提交者在集群外启动驱动程序。
Worker node任何可以在集群中运行应用程序代码的节点
Executor为工作节点上的应用程序启动的进程,该进程运行任务并将数据保存在内存或磁盘存储中。 每个应用程序都有自己的执行程序。
Task将发送给一个执行者的工作单元
Job由多个任务组成的并行计算,这些任务响应 Spark 操作(例如savecollect)而产生; 你会在驱动程序的日志中看到这个术语。
Stage每个作业被分成更小的任务集,称为 stages,它们相互依赖(类似于 MapReduce 中的 map 和 reduce 阶段); 你会在驱动程序的日志中看到这个术语。

以上是关于Spark 集群部署模式概述的主要内容,如果未能解决你的问题,请参考以下文章

Spark 概述及其高可用集群部署

Spark概述及集群部署

04Spark

待补充Spark 集群模式 && Spark Job 部署模式

Apache Spark 2.2.0 中文文档 - 集群模式概述 | ApacheCN

Spark 运行的4种模式