`

Spark - Cluster Mode概述(翻译)

阅读更多
这个文档简要的介绍下Spark是怎么样在集群模式中运行的,以方便更容易的理解其涉及到的组件。可以通过阅读 application submission guide来了解怎么样在集群中运行应用程序。

 

Components

Spark应用程序作为独立的进程集运行,它们是由 main程序(称为driver程序)中的SparkContext 对象进行协调的。
特别地,在集群上运行是,SparkContext可以与几种不同的cluster managers进行连接通信,比如Spark自己的standalone 集群管理器或者Mesos或者Yarn,这些集群管理器为应用程序分配资源。一旦连接上以后,Spark可以获取到运行在集群节点上的executors,executors是负责运行你的应用程序中计算和存储数据。然后,它把你的代码(由传递给SparkContext的JAR或者Python定义)发送给executor。最终,SparkContext发送task给executor来运行。
 

 
关于这个架构有几个有用的东西值得注意:
1. 每个application获取它自己的executor进程。在整个application运行期间,executor会一直存活,并且它以多线程的方式运行task。这有利于使各个应用之间相互隔离,这种特性体现在两方面:一是调度端(每个driver调度它自己的tasks),二是executor方面(来自于不同应用的executor运行在不同的JVM中)。然而,这也意味着数据不能在不同的Spark应用之间共享,除非把数据写到外部的存储系统。
 
2.底层的集群管理器对于Spark来说是透明的。只要Spark可以获取到executor,并且他们之间可以相互通信,那么运行Spark就是相当简单的,即使运行在也支持其他应用的集群管理器上也可以(比如:Mesos/YARN)
 
3. driver程序在其整个存活期间必须监听并且接受来自它的executor的连接(比如:请参见 spark.driver.port in the network config section )。因此,driver程序必须与worker节点中的网络是可连接的。
 
4. 因为driver在集群上调度任务,所以,它应该运行在与worker节点较近的地方,最好是同一个局域网内。如果你想要发送请求到远处的集群,最好给driver开启RPC协议让其在节点附近提交操作,而不是让driver在离工作节点很远的地方运行。

 

Cluster Manager Types

Spark现在直接支持3种集群管理器:
  • Standalone  Spark内部的一个简单的集群管理器,它使设置群变得很简单。
  • Apache Mesos – 一个通用的集群管理器,它可以运行Hadoop MapReduce和服务应用(service applications)
  • Hadoop YARN – 在Hadoop 2 中的集群管理器。
  • Kubernetes (experimental) – 以上之外的集群管理器,对于Kubernetes也有丰富的支持。Kubernetes是一个开源的提供容器化结构的平台。Kubernetes的支持是在  apache-spark-on-k8s Github组织内积极开发的。相关的文档,请阅读那个项目的README。
 

Submitting Applications

Applications可以使用 spark-submit 脚本提交到任意类型的集群上。 application submission guide描述了怎么样来提交任务。
 

Job Scheduling

Spark将在跨应用程序(在集群管理器的级别)和应用程序内(如果在同一个SparkContext上运行多个计算)中,对资源分配进行控制。  job scheduling overview 更加详细的描述了这个特性。

 

Glossary(术语)

术语项
含义
Application
基于Spark的用户程序。由driver和executor组成。
Application Jar
包含用户Spark程序的Jar包。在某些场景下,用户可能想创建“Uber jar”,它同时包含用户的应用程序和它的依赖。用户的Jar绝对不要包含Hadoop和Spark的类库。但是这些将会在运行时被加载。
Driver program
运行应用程序的main()函数并创建SparkContext的进程
Cluster manager
在集群上获取资源的外部程序。(比如: standalone manager, Mesos, YARN )
Deploy mode
它用来区分应用程序运行在哪里。在“cluster”模式中,框架在集群中运行driver,在“client”模式中,提交者在集群之外运行driver。
Worker node
集群中任何可以运行应用程序代码的节点
Executor 运行与工作节点之上的应用程序进程,他们执行task并且把数据保存在内存中或者磁盘存储中。每个应用有它自己的executor。
Task
被发送给一个executor的最小的工作单元。
Job
可以引起Spark action的返回的由多个tasks组成的并行的计算(比如:save,collect)。你可以在driver的log中看到这个词的使用。
Stage

每个job被切分成小的任务集,这些小的任务集叫做stages,并且他们之间相互依赖(类似于MapReduce中的map和redu

ce阶段)。你可以在driver的log中看到这个词的使用。

 
  • 大小: 22.4 KB
1
0
分享到:
评论

相关推荐

    spark-hive-2.11和spark-sql-以及spark-hadoop包另付下载地址

    在标题"spark-hive-2.11和spark-sql-以及spark-hadoop包另付下载地址"中,我们关注的是Spark与Hive的特定版本(2.11)的集成,以及Spark SQL和Spark对Hadoop的支持。这里的2.11可能指的是Scala的版本,因为Spark是用...

    spark-3.1.2.tgz & spark-3.1.2-bin-hadoop2.7.tgz.rar

    Spark-3.1.2.tgz和Spark-3.1.2-bin-hadoop2.7.tgz是两个不同格式的Spark发行版,分别以tar.gz和rar压缩格式提供。 1. Spark核心概念: - RDD(弹性分布式数据集):Spark的基础数据结构,是不可变、分区的数据集合...

    Ansible-ansible-spark-cluster.zip

    Ansible-ansible-spark-cluster.zip,安装spark独立集群(hdfs/spark/jupyter笔记本)或基于ambari的spark集群的ansible角色此存储库定义了多个ansible角色以帮助部署spark集群的不同模式,ansible是一个简单而强大的...

    编译的spark-hive_2.11-2.3.0和 spark-hive-thriftserver_2.11-2.3.0.jar

    spark-hive_2.11-2.3.0 spark-hive-thriftserver_2.11-2.3.0.jar log4j-2.15.0.jar slf4j-api-1.7.7.jar slf4j-log4j12-1.7.25.jar curator-client-2.4.0.jar curator-framework-2.4.0.jar curator-recipes-2.4.0....

    spark-assembly-1.5.2-hadoop2.6.0.jar

    《Spark编程核心组件:spark-assembly-1.5.2-hadoop2.6.0.jar详解》 在大数据处理领域,Spark以其高效、易用和灵活性脱颖而出,成为了许多开发者的首选框架。Spark-assembly-1.5.2-hadoop2.6.0.jar是Spark中的一个...

    spark-sql sql on yarn -deploy-mode cluster 改造

    spark-sql sql on yarn --deploy-mode cluster 改造为 可以cluster提交

    spark-2.0.0-bin-hadoop2.6.tgz

    本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载,本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载

    spark-2.4.8-bin-hadoop2.7.tgz

    安装和配置Spark 2.4.8时,你需要根据你的环境调整配置文件,如`spark-env.sh`或`spark-defaults.conf`,以适应你的Hadoop集群或本地环境。在使用Spark时,你可以通过`spark-submit`命令提交应用程序,或者直接在...

    spark-submit cluster模式时driver-class-path支持hdfs路径

    spark官方版本的driver-class-path不支持hdfs路径,只支持本地路径。本资源解决了这个问题,driver-class-path在cluster模式时可以支持hdfs路径,解决了cluster模式driver有大量jar依赖的问题。

    spark-3.1.3-bin-without-hadoop.tgz

    这个"spark-3.1.3-bin-without-hadoop.tgz"压缩包是Spark的3.1.3版本,不含Hadoop依赖的二进制发行版。这意味着在部署时,你需要自行配置Hadoop环境,或者在不依赖Hadoop的环境中运行Spark。 Spark的核心特性包括...

    spark-2.4.7-bin-hadoop2.6.tgz

    在解压`spark-2.4.7-bin-hadoop2.6.tgz`后,您会得到一个名为`spark-2.4.7-bin-hadoop2.6`的目录,其中包括以下组件: - `bin/`:包含可执行文件,如`spark-submit`,`pyspark`,`spark-shell`等,用于启动和管理...

    spark-1.6.0-bin-hadoop2.6.tgz

    Spark-1.6.0-bin-hadoop2.6.tgz 是针对Linux系统的Spark安装包,包含了Spark 1.6.0版本以及与Hadoop 2.6版本兼容的构建。这个安装包为在Linux环境中搭建Spark集群提供了必要的组件和库。 **1. Spark基础知识** ...

    apache-doris-spark-connector-2.3_2.11-1.0.1

    Spark Doris Connector(apache-doris-spark-connector-2.3_2.11-1.0.1-incubating-src.tar.gz) Spark Doris Connector Version:1.0.1 Spark Version:2.x Scala Version:2.11 Apache Doris是一个现代MPP分析...

    spark-3.2.4-bin-hadoop3.2-scala2.13 安装包

    在本安装包“spark-3.2.4-bin-hadoop3.2-scala2.13”中,包含了用于运行Spark的核心组件以及依赖的Hadoop版本和Scala编程语言支持。以下是对这些关键组成部分的详细解释: 1. **Spark**: Spark的核心在于它的弹性...

    spark--bin-hadoop3-without-hive.tgz

    本压缩包“spark--bin-hadoop3-without-hive.tgz”提供了Spark二进制版本,针对Hadoop 3.1.3进行了编译和打包,这意味着它已经与Hadoop 3.x兼容,但不包含Hive组件。在CentOS 8操作系统上,这个版本的Spark已经被...

    spark-3.1.2-bin-hadoop3.2.tgz

    5. **交互式Shell**:Spark提供了一个名为`spark-shell`的交互式环境,方便开发人员测试和调试代码。 **Spark与Hadoop 3.2的兼容性** Hadoop 3.2引入了许多新特性,如: 1. **多命名空间**:支持多个HDFS命名空间...

    spark-2.2.2-bin-hadoop2.7.tgz

    1. `bin`:存放可执行脚本,如`spark-submit`用于提交Spark应用,`spark-shell`提供交互式Shell环境。 2. `conf`:配置文件夹,存放默认配置模板,如`spark-defaults.conf`,用户可以根据需求自定义配置。 3. `jars`...

    spark-3.1.2-bin-hadoop2.7.tar

    spark-3.1.2-bin-hadoop2.7.tar

    spark-2.3.1-bin-hadoop2.7.zip

    - `bin`:包含Spark的可执行脚本,如`spark-shell`(Scala交互式环境)、`pyspark`(Python交互式环境)和`spark-submit`(提交Spark应用)等。 - `conf`:配置文件目录,其中`spark-defaults.conf`是默认配置,可以...

    spark-3.2.1-bin-hadoop2.7.tgz

    这个名为"spark-3.2.1-bin-hadoop2.7.tgz"的压缩包是Spark的一个特定版本,即3.2.1,与Hadoop 2.7版本兼容。在Linux环境下,这样的打包方式方便用户下载、安装和运行Spark。 Spark的核心设计理念是快速数据处理,...

Global site tag (gtag.js) - Google Analytics