Spark集群模式&Spark程序提交
Spark集群模式&Spark程序提交
1. 集群管理器
Spark当前支持三种集群管理方式
Standalone—Spark自带的一种集群管理方式,易于构建集群。
Apache Mesos—通用的集群管理,可以在其上运行Hadoop MapReduce和一些服务应用。
Hadoop YARN—Hadoop2中的资源管理器。
Tip1: 在集群不是特别大,并且没有mapReduce和Spark同时运行的需求的情况下,用Standalone模式效率最高。
Tip2: Spark可以在应用间(通过集群管理器)和应用中(如果一个SparkContext中有多项计算任务)进行资源调度。
2. 组件
Spark应用程序在集群上以一系列进程集合运行,通过程序(driver program)中的SparkContext对象进行卸掉。SparkContext可以与多种集群管理器(Cluster Manager)相连接,这些集群管理器可以在应用程序间分配计算资源。连到集群管理器后,Spark在急群众查找executor节点,这些节点执行运算与数据的存储。用户的应用程序(以JAR文件的形式传给SparkContext)被发送到executors。最后SparkContext发送任务tasks到executors进行执行。
Tip1: 每个Executor中以线程池的方式并行运行多个Task。意味着是应用程序之间在调度方面(每个driver调度自身的任务)和执行方面(来自不同的任务在不同的JVM上执行)相互隔离,同时,数据无法在不同的应用程序(SparkContext)之间共享,除非数据被写入到额外的存储系统。
Tip2: Spark对于底层集群管理系统来说是不可知的。只要它能够获得executor进程,并且彼此之间可以进行通信,那么很容易将其运行在一个同时支持其它应用框架的集群管理器(Mesos/YARN)上。
Tip3: 由于driver在集群上调度任务,它所在的节点应该靠近工作节点,最好位于相同的局域网中。如果想要远程地向集群发送请求,最好是为driver开启RPC,以是的就近提交操作而不是在一个距离工作节点很远的位置启动driver。
3. 提交应用程序
使用Spark的bin目录中的spark-submit脚本向集群中提交应用程序。该脚本不论cluster managers有何差异,提交作业时都有相同的接口,不必单独配置。
4. 使用spark-submit提交任务
打包好应用程序后,可以使用bin/spark-submit脚本提交应用程序。该脚本负责所需类路径(classpath)以及依赖,该脚本可以用于所有Spark支持的集群部署模式。
常用的选项:
--class: 应用程序(application)入口
--master: 集群中master节点的URL(e.g. spark://23.195.26.187:7077)
--deploy-mode: 是否将driver部署到worker节点(cluster模式)或者将driver作为一个外部的client(client模式)
application-jar:打包的包含相关依赖的jar文件的路径。该地址应该对集群可见,例如hdfs://或者file://地址。
Application-arguments:传送给应用程序main函数的参数。
Tip1: 在一个与worker机器物理上相近的机器上提交应用程序(例如Standalone模式时EC2集群上的master节点),这种情况client模式更合适。Client模式下,driver直接在spark-submit程序中启动,应用程序相关的输入输出与所在的console相联系。Client模式同样适用spark-shell中的应用程序。
Tip2: 如果一个应用程序在与那里worker集群的节点上提交(例如本地的笔记本),此时适合使用cluster模式减少driver和executer之间的网络延时。注意,当前cluster模式不适用于standalone集群,Mesos集群或Python程序。
Tip3: 可以使用 –help 选项查看spark-submit支持的所有选项。
以下示例给出常用选项:
5. 监控
每个driver程序均有一个Web界面,通常运行在4040端口,将会显示正在运行的任务的信息,executors及存储的相关信息。通过使用http://<driver-node>:4040进行访问。
6. Master地址
传送到Spark的master的地址可以使用如下格式:
7. 读取配置优先级
在代码中的SparkConf中的配置参数具有最高优先级,其次是传送spark-submit脚本的参数,最后是配置文件(conf/spark-defaults.conf)中的参数。
如果不清楚配置参数从何而来,可以使用spark-submit的—verbose选项来打印出细粒度的调度信息。
Spark集群模式&Spark程序提交的更多相关文章
- 【待补充】Spark 集群模式 && Spark Job 部署模式
0. 说明 Spark 集群模式 && Spark Job 部署模式 1. Spark 集群模式 [ Local ] 使用一个 JVM 模拟 Spark 集群 [ Standalone ...
- 【原】简述使用spark集群模式运行程序
本文前提是已经正确安装好scala,sbt以及spark了 简述将程序挂载到集群上运行的步骤: 1.构建sbt标准的项目工程结构: 其中: ~/build.sbt文件用来配置项目的基本信息(项目名 ...
- Spark集群模式概述
作者:foreyou出处:http://www.foreyou.net/2015/06/22/spark-cluster-mode-overview/声明:本文采用以下协议进行授权: 署名-非商用|C ...
- [Spark Core] 在 Spark 集群上运行程序
0. 说明 将 IDEA 下的项目导出为 Jar 包,部署到 Spark 集群上运行. 1. 打包程序 1.0 前提 搭建好 Spark 集群,完成代码的编写. 1.1 修改代码 [添加内容,判断参数 ...
- spark集群模式
1.配置集群主机免登陆,参考http://www.cnblogs.com/puroc/p/5996730.html2.修改/etc/hosts文件,增加所有主机名和IP的对应关系 3.修改spark- ...
- Spark集群之Spark history server额外配置
Note: driver在SparkContext使用stop()方法后才将完整的信息提交到指定的目录,如果不使用stop()方法,即使在指定目录中产生该应用程序的目录,history server ...
- 四、spark集群架构
spark集群架构官方文档:http://spark.apache.org/docs/latest/cluster-overview.html 集群架构 我们先看这张图 这张图把spark架构拆分成了 ...
- Spark集群搭建(local、standalone、yarn)
Spark集群搭建 local本地模式 下载安装包解压即可使用,测试(2.2版本)./bin/spark-submit --class org.apache.spark.examples.SparkP ...
- Spark集群和任务执行
[前言:承接<Spark通识>篇] Spark集群组件 Spark是典型的Master/Slave架构,集群主要包括以下4个组件: Driver:Spark框架中的驱动器,运行用户编写Ap ...
随机推荐
- ●POJ 1195 Mobile phones
题链: http://poj.org/problem?id=1195 题解: 二维树状数组 #include<cstdio> #include<cstring> #includ ...
- hdu 5491(位运算)
题意:给你n,a,b. 希望得到比n大,二进制1的个数在 a ,b之间的最小的数 思路:①满足条件,输出 ②num < a 从右找到是0的最小位,变成1 ③num > b从右到左找是1的最 ...
- bzoj1069 [SCOI2007]最大土地面积 旋转卡壳
1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3767 Solved: 1501[Submit][Sta ...
- RabbitMQ-Spring AMQP
上篇文章RabbitMQ基础入门学习了rabbitMQ一些基础的api,当然spring也在原生代码的基础上做了更多的封装,这篇文章就基于spring-rabbit,学习一下spring的实现. p. ...
- What's New In MySQL 8.0
由于8.0内有很多C++11特性.需要gcc4.8版本以上.Rhel6系列默认gcc是4.7.在安装gcc6.1之后仍然检查不过. 原因可能是6.1版本不一定高于4.7,暂不讨论.鉴于升级gc ...
- iOS 定位简单使用
一.配置 导入库CoreLocation. 2.info.plist配置key NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDes ...
- Linux 在线模拟器
最近在学习Linux的一些命令的使用,但是很久之前装的Linux虚拟机被删掉了,又不想为了练习几个命令折腾一遍虚拟机.所以,就尝试地搜了一下,看看有没有在线的Linux模拟器可以使用,只要可以练习一下 ...
- 线性回归(Linear Regression)均方误差损失函数最小化时关于参数theta的解析解的推导(手写)
第一页纸定义了损失函数的样子, theta, X 和 y 的 shape, 以及最终的损失函数向量表现形式. 第二页纸抄上了几个要用到的矩阵求导公式,以及推导过程和结果. 要说明的是:推导结果与the ...
- Firebird数据库相关操作
Firebird常用SQL 一.分页写法小例: 1 select first 10 templateid,code,name from template ; 2 select first 10 ski ...
- 关于使用Git的几点小技巧
告诉git忽略对已经纳入版本管理的文件a的修改,git会一直忽略此文件直到重新告诉git可以再次跟踪此文件: git update-index --assume-unchanged a 告诉git恢复 ...