Spark -3:三种集群模式

来源:互联网 发布:ardupilot 源码下载 编辑:程序博客网 时间:2024/06/05 21:12

本文档简要介绍了如何在集群上运行spark,使之更容易理解所涉及的组件。通过应用程序提交指南了解关于在集群上启动应用程序的情况.。


组件

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


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

Spark cluster components


这个架构有几个有用的事情需要注意:

1.每个应用程序都有自己的执行程序进程,它们在整个应用程序的持续时间内运行,并在多个线程中运行任务。这有利于在调度端(每个驱动程序调度其自己的任务)和执行器端(来自在不同JVM中运行的不同应用程序的任务)将应用程序彼此隔离。但是,这也意味着数据不能在不将其写入外部存储系统的情况下跨不同的Spark应用程序(SparkContext实例)共享。


2.Spark对底层集群管理器是不可知的。只要它可以获得执行器进程,并且这些进程彼此通信,即使在同样支持其他应用程序(例如Mesos / YARN)的集群管理器上,它也是相对容易运行的。


3.驱动程序必须在其生命周期内监听并接受来自其执行器的传入连接(例如,请参阅network config节中的spark.driver.port)。因此,驱动程序必须是工作节点的网络可寻址的。


4.因为驱动程序在群集上调度任务,所以它应该靠近工作节点运行,最好在同一个局域网上运行。如果你想远程发送请求到集群,最好打开一个RPC给驱动程序,并从附近提交操作,以运行远离工作节点的驱动程序。


集群管理器类型

系统目前支持三个集群管理器:

独立 - 包含在Spark中的简单集群管理器,可以轻松设置集群。

Apache Mesos  - 一个通用的集群管理器,也可以运行Hadoop MapReduce和服务应用程序。

Hadoop YARN  -  Hadoop 2中的资源管理器。


提交应用程序

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

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

作业计划
Spark给予跨应用程序(在集群管理器级别)和应用程序(如果多个计算在同一SparkContext上进行)上的资源分配的控制。作业调度概述更详细地描述此
专业术语
下表总结了您将用来引用群集概念的术语:

Application:基于Spark的用户程序。由集群上的驱动程序和执行程序组成。


Application jar:包含用户的Spark应用程序的jar。在某些情况下,用户会想创建一个包含其应用程序及其依赖关系的“uber jar”。用户的jar不应包括Hadoop或Spark库,但是,这些将在运行时添加。


Driver program:该进程运行应用程序的main()函数并创建SparkContext


Cluster manager:用于获取集群上的资源的外部服务(例如,独立管理器,Mesos,YARN)


Deploy mode:区分驱动程序进程运行的位置。在“集群”模式下,框架会启动集群中的驱动程序。在“客户端”模式下,提交器在集群外启动驱动程序。


Worker node:任何可以在集群中运行应用程序代码的节点


Executor:为工作节点上的应用程序启动的进程,该进程运行任务并将数据保存在内存或磁盘存储中。每个应用程序都有自己的执行器。


Task:将发送给一个执行器(executor)的工作单元


Job:由多个任务组成的并行计算,响应Spark操作(例如保存,收集)而生成;您将在驱动程序日志中看到此术语。


Stage:每个作业被分成更小的任务集,称为相互依赖的阶段(类似于MapReduce中的映射和缩减阶段);您将在驱动程序日志中看到此术语。


原文地址:http://spark.apache.org/docs/latest/cluster-overview.html#monitoring


0 0