spark-集群模式概述

集群模式概述

简单介绍spark如何运行在集群上,以便更容易理解所涉及的组件。通读应用程序提交,了解如何在集群上启动应用程序。

组件

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

具体来说,要在集群上运行,SparkContext 可以连接到多种类型的集群管理器(Spark 自己的独立集群管理器 MesosYARN)跨应用程序分配资源。连接之后,spark会在集群的节点上获取executors,这些executors进程为您的应用程序运行计算存储数据。接下来,它将您的应用程序代码(由传递给 SparkContext 的 JAR 或 Python 文件定义)发送到executors,最后,SparkContext 将任务发送给executor运行。
请添加图片描述
关于这个架构,有几个有用的地方需要注意:

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

集群管理器的类型

spark系统当前支持的几种集群管理器:

  • standalone:Spark 附带的一个简单的集群管理器,可以轻松设置集群
  • Apache Mesos:一个通用的集群管理器,也可以运行 Hadoop MapReduceservice applications
  • Hadoop YARN:Hadoop 2 中的资源管理器。
  • k8s:一个用于自动化部署扩展管理容器化应用程序的开源系统。

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

提交应用

可以使用 spark-submit 脚本将应用程序提交到任何类型的集群。 application submission guide 描述了如何做到这一点

监控

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

作业调度

Spark 可以控制跨应用程序(在集群管理器级别)和应用程序内部(如果在同一个 SparkContext 上发生多个计算)的资源分配。有关详情参考:job scheduling overview

词汇表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值