4. Spark在集群上运行
*以下内容由《Spark快速大数据分析》整理所得。
读书笔记的第四部分是讲的是Spark在集群上运行的知识点。
一、Spark应用组件介绍
二、Spark在集群运行过程
三、Spark配置
四、Spark资源分配
一、Spark应用组件介绍
Spark应用组件有三个:驱动器、集群管理器和执行器。
- 驱动器节点:有两个职责:把用户转为任务和为执行器节点调度任务。
- 执行器节点:负责在Spark作业中运作任务。
- 集群管理器:Spark依赖于集群管理器来启动执行器节点。
集群管理器:为了方便多人调度时合理的进行资源管理,许多集群管理器支持队列,可以为队列定义不同优先级或容量限制,这样Spark 就可以把作业提交到相应的队列中。
集群管理器分为两种:
(1) 独立集群管理器:由一个主节点和几个工作节点组成,各自都分配一定量的内存和CPU核心。可以在一堆机器上运行Spark。
(2) Hadoop YARN与Hadoop Mesos之类的集群管理器:能与别的分布式应用共享的集群。
二、Spark在集群运行过程
Spark在集群上运行的过程如下:
(1) 用户通过 spark-submit 脚本提交应用。
(2) spark-submit 脚本启动驱动器程序,调用用户定义的main()方法。
(3) 驱动器程序与集群管理器通信,申请资源以启动执行器节点。
(4) 集群管理器为驱动器程序启动执行器节点。
(5) 驱动器进程执行用户应用中的操作。根据程序中所定义的对 RDD 的转化操作和行动操作,驱动器节点把工作以任务的形式发送到执行器进程。
(6) 任务在执行器程序中进行计算并保存结果。
(7) 如果驱动器程序的main()方法退出,或者调用了 SparkContext.stop() ,驱动器程序会 终止执行器进程,并且通过集群管理器释放资源。
提交应用样本示例:
# [options] 是要传给 spark-submit 的标记列表
# <app jar | python File> 表示包含应用入口的 JAR 包或 Python 脚本。
# [app options] 是传给你的应用的选项
bin/spark-submit [options] <app jar | python file> [app options]
bin/spark-submit my_script.py
三、Spark配置
配置Spark有三种方式(优先级由高到低):
(1) SparkConf配置:在用户代码中显式调用 set() 。
# 创建一个conf对象
conf = new SparkConf() # 修改配置信息
conf.set("spark.app.name", "My Spark App")
conf.set("spark.master", "local[4]")
conf.set("spark.ui.port", "36000") # 重载默认端口配置 # 使用这个配置对象创建一个SparkContext
sc = SparkContext(conf)
(2) 命令行参数配置:通过 spark-submit --conf 传递参数。
# 在运行时使用标记设置配置项的值
$ bin/spark-submit \ --class com.example.MyApp \
--master local[4] \
--name "My Spark App" \
--conf spark.ui.port=36000 \
myApp.jar
(3) 配置文件配置: --properties-file 指向写好的配置文件的路径。
# 运行时使用默认文件设置配置项的值
bin/spark-submit \
--class com.example.MyApp \
--properties-file my-config.conf \
myApp.jar
四、Spark资源分配
在独立集群管理器中,资源分配的两个设置:
(1) 执行器进程内存: --executor-memory
(2) 占用核心总数的最大值: --total-executor-cores
例子:以--executor-memory 1G和--total-executor-cores 8提交应用,Spark会在不同机器上启动8个执行器进程,每个1GB内存。
YARN:--executor-memory和--executor-cores
Mesos:--executor-memory和--total-executor-cores
4. Spark在集群上运行的更多相关文章
- spark在集群上运行
1.spark在集群上运行应用的详细过程 (1)用户通过spark-submit脚本提交应用 (2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法 (3)驱动器程序与集群管 ...
- Spark学习之在集群上运行Spark
一.简介 Spark 的一大好处就是可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力.好在编写用于在集群上并行执行的 Spark 应用所使用的 API 跟本地单机模式下的完全一样.也就是说 ...
- Eclipse提交代码到Spark集群上运行
Spark集群master节点: 192.168.168.200 Eclipse运行windows主机: 192.168.168.100 场景: 为了测试在Eclipse上开发的代码在Spa ...
- 在集群上运行Spark
Spark 可以在各种各样的集群管理器(Hadoop YARN.Apache Mesos,还有Spark 自带的独立集群管理器)上运行,所以Spark 应用既能够适应专用集群,又能用于共享的云计算环境 ...
- [Spark Core] 在 Spark 集群上运行程序
0. 说明 将 IDEA 下的项目导出为 Jar 包,部署到 Spark 集群上运行. 1. 打包程序 1.0 前提 搭建好 Spark 集群,完成代码的编写. 1.1 修改代码 [添加内容,判断参数 ...
- 将java开发的wordcount程序提交到spark集群上运行
今天来分享下将java开发的wordcount程序提交到spark集群上运行的步骤. 第一个步骤之前,先上传文本文件,spark.txt,然用命令hadoop fs -put spark.txt /s ...
- 06、部署Spark程序到集群上运行
06.部署Spark程序到集群上运行 6.1 修改程序代码 修改文件加载路径 在spark集群上执行程序时,如果加载文件需要确保路径是所有节点能否访问到的路径,因此通常是hdfs路径地址.所以需要修改 ...
- Spark学习之在集群上运行Spark(6)
Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力. 2. Spark既能适用于专用集群,也可以适用于共享的云计算 ...
- 在local模式下的spark程序打包到集群上运行
一.前期准备 前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客: Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分 ...
随机推荐
- Redis 中 HyperLogLog 的使用场景
什么是基数估算 HyperLogLog 是一种基数估算算法.所谓基数估算,就是估算在一批数据中,不重复元素的个数有多少. 从数学上来说,基数估计这个问题的详细描述是:对于一个数据流 {x1,x2,.. ...
- Struts2 学习记录-第一天
Struts2 -01 struts2框架认识 struts2框架是web层框架.struts2框架=webwork+strut1框架发展过来的.struts2框架设计主要用到技术:通过过滤器进行请求 ...
- day27 Pyhton 面向对象02 组合
# 组合 # 什么是组合 : 一个类对象的属性是另外一个类的对象 class Person: def __init__(self,name,sex,hp,mp,ad): self.name = nam ...
- SQL Server语法入门
1.说明:增加.删除一个列 Alter table tablename add columnName col type alter table tablename drop columnName co ...
- CTSC2010
星际旅行 https://www.luogu.com.cn/problem/P4189 题目:且每个星球的\(H_i\)大于等于与该星球直接相连的星球数(即度数). 想到先从根到所有点都走一遍,然后贪 ...
- jquery 添加html标签
<script type="text/javascript"> var sss = 1; function addFile() { if (sss < 20) { ...
- web功能测试
web功能测试基础: https://www.cnblogs.com/wz123/p/9680484.html
- EFS加密
目录 EFS简介 EFS的特点 EFS的缺陷 EFS证书 证书的导出 证书的安装 EFS加密 方法一 方法二 EFS简介 EFS(Encrypting File System,加密文件系统)是Wind ...
- 请勿过度依赖Redis的过期监听!!
作者:迪壳 https://juejin.im/post/6844904158227595271 Redis 过期监听场景 业务中有类似等待一定时间之后执行某种行为的需求 , 比如 30 分钟之后关闭 ...
- docker启动redis并设置密码
docker启动redis并设置密码: docker run -d --name redis -p 6379:6379 redis --requirepass "password" ...