<Spark><Running on a Cluster>
Introduction
- 之前学习的时候都是通过使用spark-shell或者是在local模式运行spark
- 这边我们首先介绍Spark分布式应用的架构,然后讨论在分布式clusters中运行Spark的options(Spark可以运行在多种cluster managers之上:Hadoop YARN,Apache Mesos,以及Spark自带的内置Standalone cluster manager)。之后我们还会讨论scheduling,deploying和configuring一个Spark应用的细节。
Spark Runtime Architecture

- a driver + its executor = a Spark application
- 一个Spark应用通过使用一个外部服务--cluster manager来在一系列机器上运行
The Driver
- driver是你程序运行main()函数的进程,是用户代码创建SparkContext,创建RDDs,执行transformations和actions的进程
- driver有两个职责:
- 将一个用户程序转化成tasks:Spark program隐式地 创建一个Operations的逻辑有向无环图(DAG),当driver运行的时候,它会将该DAG转换成一个实际执行计划。Spark会执行一些优化,比如"pipelining“ map transformations together to merge them,并且将执行图转成一系列stages。每个stage由多个tasks组成。
- Scheduling tasks on executors:给定一个实际执行计划,Spark driver必须将每个单独的tasks调度到executors上。当executors注册到driver之后,driver会对executors有complete view。Driver会查看当前的executors并且试图把每个task调度到合适的位置。
Executors
- Spark executors就是负责运行给定job中tasks的工作进程。Executors有两个角色:
- 运行tasks,并将结果返回到driver;
- 为用户程序缓存的RDDs提供in-memory storage:通过每个executor内部生存的Block Manager。
Cluster Manager
- Spark依赖一个cluster manager来launch executors,并且在某些情况下,来launch driver。
Launching a Program
- 不管你使用何种cluster manager,你都可以使用spark-submit脚本来提交你的程序。
Summary
- 用户使用spark-submit提交一个application;
- spark-submit启动driver program并invokes用户指定的main()函数;
- driver program与cluster manager联系来获取启动executors的资源;
- cluster manager代表driver program启动executors;
- driver进程run through user application,基于程序中的RDD actions和transformations,driver将work以tasks的形式发送给executors;
- tasks在executor进程中被运行,并计算和保存结果;
- 如果driver的主函数退出或调用了SparkContext.stop()方法,那么executors会被终止,资源将会从cluster manager中被释放。
Deploying Applications with Spark-submit
<Spark><Running on a Cluster>的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- es-aggregations聚合分析
聚合分析的格式: "aggregations" : { "<aggregation_name>" : { "<aggregation ...
- Linux中计划任务、周期性任务设置
Linux中计划任务.周期性任务设置 计划任务:指在未来的特定时间里,执行一次某一特定任务.当然,如果同一任务需要在不同时间点执行执行两次.三次或多次,可以视为多个一次看待. 周期性任务:指某一任务需 ...
- Sonya and Matrix CodeForces - 1004D (数学,构造)
http://codeforces.com/contest/1004/problem/D 题意:网格图给定到中心点的曼哈顿距离数组, 求该图n,m及中心点位置 首先可以观察到距离最大值mx一定在某个角 ...
- k8s问题收集
问题 解决 failed: rpc error: code = Unknown desc = NetworkPlugin cni failed to set up pod "*****&qu ...
- CF-787D-线段树建图+最短路
http://codeforces.com/problemset/problem/787/D 题目大意是给出一个有向图,有N个节点,初始节点在S,询问S到所有点最短路.边的读入方式有三种, 1 u v ...
- 配置tomcat允许跨域访问,cors跨域资源共享
1.导入cors-filter-1.7.jar,java-property-utils-1.9.jar两个jar包 2.在web.xml里配上: <filter> <filter-n ...
- 一、SQL应用(工作中遇到的根据表的某列的值不同,采用的不同列关联表)
一.工作总结: 今天工作中遇到了这样一个需求,具体是根据某张表的某一列值得不同,进行不同关联操作.起初自己的想法是采用UNION操作,把两种情况连接起来,但是会出现一个问题,当进行动态传值SQL拼接的 ...
- 如何解决Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 8000401a. 问题
在系统中需要把数据导出到excel并且压缩,然后报了这个问题: 我在网站上找到了方法: 地址:https://social.msdn.microsoft.com/Forums/vstudio/en-U ...
- web服务器/应用服务器/http服务器/中间件
web服务器:只处理html静态页面不处理动态页面,如apache/nginx/iis等. 应用服务器:能处理html静态页面也能处理动态页面,如tomcat/weblogic/websphere/j ...
- php 异常捕获的坑
thinkphp 框架需要注意 书写为(Exception $e)将无效 需要写成 (\Exception $e) try { throw new \Exception("Error P ...