下面的内容直接翻译自
http://spark.apache.org/docs/latest/cluster-overview.html
会有少量自己的扩展补充,当然理解或翻译上的问题,有错请指正,下面正式开始。
本文简单介绍了Spark是如何在集群上运行的,这能让我们更好的理解涉及的各个模块。想了解应用是如何在cluster上启动的同学可以研读
http://spark.apache.org/docs/latest/submitting-applications.html
组件介绍
Spark 应用运行时就像在集群上相互独立运行一组程序,它们之间通过主程序(称为驱动程序)的SparkContext相互协调。
特别的,为了在集群上运行,SparkCntext能够连接到多种类型的集群管理器上(不仅仅是Spark自己的独立集群管理器,Mesos、YARN),这样就能在跨应用协调资源。一旦链接成功,Spark就获得了集群节点上执行器的状态,执行器将实际运行应用或为应用存储数据。然后,向执行器发送应用码(在Jar或Python文件中定义,在启动时传递给SparkContext的一致)。最后,SparkContext向执行器发送任务。
上图中必须提到的几点:
1. 每个应用都有自己的执行器进程,这个进程持续应用的整个过程中,用多线程执行任务。隔离各个应用是有好处的,在调度侧,每个驱动程序只需要调度自己的任务,在执行侧,不同应用的任务运行在不同的JVM中。同样,这样也意味着如果不适用外部存储,不同应用间无法共享数据。
2. Spark 不在乎下层集群管理器。 只要能够获取执行器进程信息,并且与它们能够相互通信,就能够运行,不管下层集群管理器还支持其他应用(如,Mesos,YARN)。
3. 驱动程序在整个生命周期里必须监听并接受执行器的连接,具体的例子参考网络配置章节
http://spark.apache.org/docs/latest/configuration.html#networking的spark.driver.port and spark.fileserver.port。因此,驱动程序对它的工作节点而言必须是网络可达的。
4.因为驱动程序负责任务在集群中的执行排序,需要尽量接近工作节点,最好是在同个局域网中。如果,还是有需要操作远程集群请求,在临近网络做操作,并且使用RPC,会优于在离工作节点很远的地方运行驱动程序
集群管理
目前Spark系统支持3种集群管理器:
1.Standalone - Spark自带的集群管理器,能够方便的启动集群
2.Apache Mesos - 一种能够运行Hadoop MapReduce 和服务应用的通用集群管理器
3.Hadoop YARN - Hadoop 2中的资源管理器
另外,Spark也有 EC2 launch scripts 能够方便的在Amazon EC2上运行Standalone 集群
提交应用
应用可以通过 spark-submit 提及到集群,详见
http://spark.apache.org/docs/latest/submitting-applications.html
监控
每个驱动程序都有一个端口为4040的web页面,显示当前运行任务、执行器、存储使用等信息。在浏览器中输入http://<driver-node>:4040就能访问。详见
http://spark.apache.org/docs/latest/monitoring.html
任务调度
Spark能够跨应用(集群管理器层)或应用内部(如果存在多个计算过程)进行资源分配控制。详见
http://spark.apache.org/docs/latest/job-scheduling.html
词汇表
下列名称解释能够帮助我们集群的概念。
应用(Application)- 在Spark上创建的用户程序,包括驱动程序和集群上的执行器。
Jar应用(Application jar) - Jar包含了用户Spark应用。某些情况下,用户想创建一个包括应用和它之上的依赖lib的 uber jar。但用户的Jar不能包括Hadoop和Spark lib,这些lib会在运行时加入
驱动程序(Driver program)- 执行应用中main()方法并且创建Sparkcontext的进程。
集群管理器(Cluster Manger)- 一个用于获取集群资源信息的外部服务,例如standalone manager、Mesos、YARN
发布模式(Deploy Mode)- 以驱动程序运行位置区分。集群(cluster)模式下,框架在集群内部启动驱动程序;终端(client)模式下,应用提及者在集群外部启动驱动程序。
工作节点(Worker node)- 集群中任意一台能够运行应用代码的节点。
执行器(Executor)- 在工作节点上为一个应用启动的一个进程,能够运行任务、在内存或磁盘上存储数据。每个应用都要自己的执行器。
任务(Task)- 发送给执行器的工作单元。
工作(Job)- 包含多个任务的一个并行运算,由Spark操作(例如,save,cellect)的响应产生(原文,A parallel computation consisting of multiple tasks that gets spawned in response to a Spark action,后面半句不是很理解

,望指点)。在驱动日志中会经常看到。
阶段(Stage)- 每个工作(Job)会分成一些称为Stage的更小的想好依赖任务(task)组(有点像MapReduce中的map 和Reduce)。同样,在驱动日志中会经常看到。

- 大小: 31.1 KB
分享到:
相关推荐
2. 应用程序被打包成jar文件或其他形式,提交到Spark集群。 3. Spark Driver程序初始化,创建SparkContext,解析用户应用程序。 4. SparkContext向Master注册应用程序,并请求计算资源来启动executors。 5. Master...
部署模式是Spark集群部署的重要组成部分,它决定了Spark应用程序如何在集群中运行。根据官方文档(http://spark.apache.org/docs/latest/cluster-overview.html),Spark支持多种集群管理器,包括Standalone、Apache...
Spark 的默认设置是为小型数据集和小型集群设计的,无法满足大型数据科学项目的需求。Spark Autotuning 可以自动地调整这些设置,以提高计算效率和资源利用率。 Spark Overheads: Spark Overheads 是 Spark 的一...
* 可以在现有的 Spark 或 Hadoop 集群上运行,无需改变集群 * 提供了丰富的深度学习支持 * 高性能,powered by Intel MKL 和多线程编程 * 高效的扩展能力,使用 all-reduce 通信在 Spark 上 Applications of BigD ...
在大数据领域, Hortonworks Data Platform (HDP) 是一个广泛使用的开源平台,它集成了各种大数据处理工具,如Hadoop、HBase、Spark等。安全是任何数据平台的核心组成部分,尤其在处理敏感或关键信息时更为重要。...
CDH,全称为Cloudera Distribution Including Apache Hadoop,是由Cloudera公司提供的一款开源大数据平台,它包含了多个Apache Hadoop生态系统中的项目,如HDFS、MapReduce、YARN、HBase、Spark等,旨在为企业提供一...
- **Overview**:用于转换SQL脚本,使其适用于Spark环境。 - **Conversion Rules**:将原始SQL文件拆分为表转换和最终表合并步骤;识别ACID操作,并将其合并为单个INSERT或OVERWRITE操作;处理特殊情况,如大小写...