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)
  • 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中看到这个词的使用。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值