Spark集群模式概述
作者:foreyou
出处:http://www.foreyou.net/2015/06/22/spark-cluster-mode-overview/
声明:本文采用以下协议进行授权: 署名-非商用|CC BY-NC 3.0 CN ,转载请注明作者及出处。
本篇文章作为理解Spark框架的入门文章,对《Spark Cluster Mode Overview》的翻译。
集群模式概述
为了便于理解Spark框架的组件,这篇文章对Spark是如何运行在集群上做了概述。如果想要知道如何提交应用程序给Spark集群可以通读《application submission guide》。
组件
Spark应用程序以一组独立的进程的运行在集群上,由在主程序(称之为DriverProgram)中的SparkContext对象来协调这些进程。SparkContext可以连接到多种跨应用程序的资源分配集群管理器(比如,Spark自己的Standalone和Mesos/Yarn等),以运行Spark集群。一旦连接到集群,Spark便能获得了集群内部节点上的Executor。每个Executor都是集群节点上的一个为应用程序提供计算和数据存储的进程。然后,SparkContext会将代码发送给Executor。最后,SparkContext会把任务发给Executor执行。

关于这个架构,有几个值得注意的细节:
- 每个应用程序都会得到属于自己的一组
Executor进程,这些进程伴随在应用程序的整个生命周期内,会一直以多线程的方式执行任务。这得益于应用程序彼此之间在调度和执行两端的都是分离的,因为每个driver program都只会调度自己应用程序的任务,同时不同应用程序的任务都会运行在不同的JVM中。这也意味着,除非将数据写到外部存储,否则Spark应用程序(SparkContext实例)之间没法共享数据。 Spark对于底层的集群管理器是不可见的。只要获得Executor并让他们之间能够彼此通信,在集群管理器(例如,Mesos/Yarn)上运行Spark应用程序就会变得相对容易,这些集群管理器还可以运行其他类型的应用程序。- 在
Driver program的整个生命周期内,它都要接听和接受来自Executor的连接请求(详见spark.driver.port and spark.fileserver.port in the network config section)。这样Driver program必须是从工作节点网络可寻址的。 - 因为
Driver program是用来调度任务在集群上执行的,所以它运行的节点应该尽量靠近工作节点,最好是同一个局域网。如果你想远程发送请求到集群,最好开一个RPC到driver,并把它提交到一个靠近集群的driver而不是一个远离工作节点的driver。
集群管理器类型
Spark系统目前支持三种类型的集群管理器:
Standalone-Spark框架提供的便于其创建集群的一种集群管理器。Apache Mesos- 一个也可以运行HadoopMapReduce和服务程序的通用集群管理器。Hadoop YARN-Hadoop 2的资源管理器。
除此之外,Spark还提供了EC2 launch scripts便于其在Amazon EC2之上建立Standalone集群。
提交应用程序
应用程序可以使用spark-submit脚本提交到集群上去运行。《application submission guide》介绍了详细步骤。
监控(Monitoring)
每个Driver program都有一个对应的网络UI,应用程序端口为4040,用于显示有关正在运行的任务,Executor,以及存储使用情况的信息。在浏览器内通过http://<driver-node>:4040链接访问此网络UI。《monitoring guide 》还介绍了其他监控选项。
作业调度(Job Scheduling)
Spark框架下,既有跨应用程序的资源分配(集群管理器级别),也有应用程序内资源分配(如果在同一个SparkContext上发生了多个计算)。详见《job scheduling overview》。
术语(Glossary)
下表汇总了Spark框架下的概念术语:
| 术语 | 意思 |
|---|---|
Application |
在Spark上构建的程序,由Driver program和集群上的Executor组成 |
Driver program |
运行main()函数和创建SparkContext的进程 |
Cluster manager |
用于获取集群上资源的外部服务(例如,Standalone,Mesos,YARN) |
Worker node |
集群中任意可以运行应用的节点 |
Executor |
在工作员节点上为应用所启动的一个进程,可以运行任务以及可以在内存或是硬盘中保存数据。每一个应用都有属于自己的一组Executor |
Task |
一个可以被发送给Executor的工作单元 |
Job |
一个用于响应Spark action(例如,save,collect)的多任务组成的并行计算;你可以在驱动日志中看到这个术语 |
Stage |
每个工作被分为较小相互依赖的Task集合称为Stage (和MapReduce中的map和reduce阶段相似); 你可以在驱动日志中看到这个术语 |
Spark集群模式概述的更多相关文章
- Apache Spark 2.2.0 中文文档 - 集群模式概述 | ApacheCN
集群模式概述 该文档给出了 Spark 如何在集群上运行.使之更容易来理解所涉及到的组件的简短概述.通过阅读 应用提交指南 来学习关于在集群上启动应用. 组件 Spark 应用在集群上作为独立的进程组 ...
- Spark集群模式&Spark程序提交
Spark集群模式&Spark程序提交 1. 集群管理器 Spark当前支持三种集群管理方式 Standalone-Spark自带的一种集群管理方式,易于构建集群. Apache Mesos- ...
- 【待补充】Spark 集群模式 && Spark Job 部署模式
0. 说明 Spark 集群模式 && Spark Job 部署模式 1. Spark 集群模式 [ Local ] 使用一个 JVM 模拟 Spark 集群 [ Standalone ...
- 【原】简述使用spark集群模式运行程序
本文前提是已经正确安装好scala,sbt以及spark了 简述将程序挂载到集群上运行的步骤: 1.构建sbt标准的项目工程结构: 其中: ~/build.sbt文件用来配置项目的基本信息(项目名 ...
- spark集群模式
1.配置集群主机免登陆,参考http://www.cnblogs.com/puroc/p/5996730.html2.修改/etc/hosts文件,增加所有主机名和IP的对应关系 3.修改spark- ...
- Spark集群-Standalone 模式
Spark 集群相关 table td{ width: 15% } 来源于官方, 可以理解为是官方译文, 外加一点自己的理解. 版本是2.4.4 本篇文章涉及到: 集群概述 master, worke ...
- 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序
第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...
- Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)
Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...
- Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析
Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...
随机推荐
- coreOS+Docker新一代企业轻量级Linux
CoreOS官网主页使用一句话概括其理 念:“A new way to think about servers”,以及紧接着的“CoreOS is Linux for massive server d ...
- 加上固件密码,Mac更安全
在Mac OS X中,管理员密码非常重要,在修改系统参数或安装软件时都要求输入密码,这避免了绝大部分的破坏性误操作和恶意程序(尽管Mac上恶意程序本来就少的可怜). 但是对Mac OS X比较熟悉的人 ...
- DB2 错误编码 查询(二)(转)
DB2 SQLSTATE 讯息 类代码 42 语法错误或访问规则违例表 32. 类代码 42:语法错误或访问规则违例 SQLSTATE 值 含义 42501 授权标识不具有对标识对象执行指定操作的 ...
- Android中的windowSoftInputMode属性详解
这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下 在前面的一篇文章中 ...
- Android 使用新浪微博SSO授权
新浪微博SSO授权,很早就做好了,只是一直没有时间整理博客,今天加班,晚上闲暇之时便想到整理一下.由于整个七月份很忙,加班很多.前段时间把腾讯微博的SSO认证整理好了.想在七月份翻篇之前再写点东西.好 ...
- POJ 2752 Seek the Name, Seek the Fame(next数组的理解)
做此题,只要理解好next数组就行....................... #include <cstdio> #include <cmath> #include < ...
- DevExpress GridView.CustomSummaryCalculate 实现自定义Group Summary
--首发于博客园, 转载请保留链接 博客原文 DevExpress Documentation官方地址:GridView.CustomSummaryCalculate Event 1. 概要 界面上 ...
- USB2.0速度识别
我们知道USB2.0向下兼容USB1.x,即高速2.0的hub能支持所有的速度类型的设备,而USB1.x的hub不能支持高速设备(High Speed Device).因此,如果高速设备挂到USB1. ...
- openOffice安装
[root@rusky openOffice]# tar -zxvf OOo_3..0_Linux_x86_install-rpm-wJRE_zh-CN.tar.gz [root@rusky open ...
- bug记录-setTimeout、setInterval之IOS7
本篇文章主要讲查找并分析bug的思路,相关的函数不是本文的重点. 众所周知,setTimeout和setInterval是用来做延迟调用以及周期性调用的方法,他们支持的参数都差不多. setTimeo ...