这个文档简要的介绍下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中看到这个词的使用。 |
相关推荐
在标题"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是两个不同格式的Spark发行版,分别以tar.gz和rar压缩格式提供。 1. Spark核心概念: - RDD(弹性分布式数据集):Spark的基础数据结构,是不可变、分区的数据集合...
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 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编程核心组件: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 改造为 可以cluster提交
本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载,本资源是spark-2.0.0-bin-hadoop2.6.tgz百度网盘资源下载
安装和配置Spark 2.4.8时,你需要根据你的环境调整配置文件,如`spark-env.sh`或`spark-defaults.conf`,以适应你的Hadoop集群或本地环境。在使用Spark时,你可以通过`spark-submit`命令提交应用程序,或者直接在...
spark官方版本的driver-class-path不支持hdfs路径,只支持本地路径。本资源解决了这个问题,driver-class-path在cluster模式时可以支持hdfs路径,解决了cluster模式driver有大量jar依赖的问题。
在解压`spark-2.4.7-bin-hadoop2.6.tgz`后,您会得到一个名为`spark-2.4.7-bin-hadoop2.6`的目录,其中包括以下组件: - `bin/`:包含可执行文件,如`spark-submit`,`pyspark`,`spark-shell`等,用于启动和管理...
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.1.3-bin-without-hadoop.tgz"压缩包是Spark的3.1.3版本,不含Hadoop依赖的二进制发行版。这意味着在部署时,你需要自行配置Hadoop环境,或者在不依赖Hadoop的环境中运行Spark。 Spark的核心特性包括...
在本安装包“spark-3.2.4-bin-hadoop3.2-scala2.13”中,包含了用于运行Spark的核心组件以及依赖的Hadoop版本和Scala编程语言支持。以下是对这些关键组成部分的详细解释: 1. **Spark**: Spark的核心在于它的弹性...
Spark-1.6.0-bin-hadoop2.6.tgz 是针对Linux系统的Spark安装包,包含了Spark 1.6.0版本以及与Hadoop 2.6版本兼容的构建。这个安装包为在Linux环境中搭建Spark集群提供了必要的组件和库。 **1. Spark基础知识** ...
5. **交互式Shell**:Spark提供了一个名为`spark-shell`的交互式环境,方便开发人员测试和调试代码。 **Spark与Hadoop 3.2的兼容性** Hadoop 3.2引入了许多新特性,如: 1. **多命名空间**:支持多个HDFS命名空间...
本压缩包“spark--bin-hadoop3-without-hive.tgz”提供了Spark二进制版本,针对Hadoop 3.1.3进行了编译和打包,这意味着它已经与Hadoop 3.x兼容,但不包含Hive组件。在CentOS 8操作系统上,这个版本的Spark已经被...
1. `bin`:存放可执行脚本,如`spark-submit`用于提交Spark应用,`spark-shell`提供交互式Shell环境。 2. `conf`:配置文件夹,存放默认配置模板,如`spark-defaults.conf`,用户可以根据需求自定义配置。 3. `jars`...
- `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,与Hadoop 2.7版本兼容。在Linux环境下,这样的打包方式方便用户下载、安装和运行Spark。 Spark的核心设计理念是快速数据处理,...
这个压缩包"spark-3.2.0-bin-hadoop3.2.tgz"包含了Spark 3.2.0版本的二进制文件,以及针对Hadoop 3.2的兼容构建。 Spark的核心组件包括:Spark Core、Spark SQL、Spark Streaming、MLlib(机器学习库)和GraphX(图...