<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 安装并启动 ...
随机推荐
- SQL的其他用法
SQL语言的其他用法 --求半径2米.高3米的圆柱体体积 select PI() select SQUARE(2)*PI()*3 '体积' --求字符串‘adsgdajfhwruhwuiriutoo ...
- android -------- 错误Attribute application@allowBackup value=(true) from AndroidManifest.xml
开发中遇到一个问题,运行项目时,出现了一个这如下这样的问题 问题: Manifest merger failed : Attribute application@allowBackup value=( ...
- php字符串转成数组
/* 4.$m = “woxihuanphp”,编程实现:将字符串分割为单个字符存放到一个数组中,并打印数组? */ $m='woxihuanphp'; echo $res=trim(chunk_sp ...
- numpy学习:数据预处理
待处理的数据:150*150的灰度图片,除分析目标外,背景已经抹0 需要实现的目标:背景数字0不变,对其余数字做一个归一化处理 对list处理可以用 a=list(set(a)) # 实现了去除重复元 ...
- Mybatis中int insertSelective()的相关问题
1.selective的意思是:选择性2.insertSelective--选择性保存数据:比如User里面有三个字段:id,name,age,password但是我只设置了一个字段:User u=n ...
- ACM-ICPC 2018 南京赛区网络预赛Skr
题意:求本质不同的回文子串的和 题解:先构造pam,然后根据pam的原理(ch表示在该节点表示的回文串两侧加上该字符)对于每个节点维护一个表示该节点字符串的值,加起来即可 //#pragma GCC ...
- h5手机端禁止缩放问题
最近测试html5页面,发现默认都允许用户缩放页面,或者在屏幕双击放大或缩小.即相当于这样设置 <meta name="viewport" content="wid ...
- WDA基础二:界面,元素介绍
1.ELEMENTS: BUTTON 按钮 CAPTION 标题 DROPDOWN_BY_IDX 带序号的下拉 DROPDOWN_BY_KEY 带键值的下拉 FILE_UPLOAD ...
- 调整innodb redo log files数目和大小的具体方法和步骤
相较于Oracle的在线调整redo日志的数目和大小,mysql这点则有所欠缺,即使目前的mysql80版本,也不能对innodb redo日志的数目和大小进行在线调整,下面仅就mysql调整inno ...
- MSSQL内存架构及管理
1. MSSQL内存架构 相比较Oracle,MSSQL的内存区域并没那么清晰,但和Oracle类似,MSSQL内存区域大体也可以分为三个部分:buffer pool,query/workspace ...