*以下内容由《Spark快速大数据分析》整理所得。

读书笔记的第四部分是讲的是Spark在集群上运行的知识点。

一、Spark应用组件介绍

二、Spark在集群运行过程

三、Spark配置

四、Spark资源分配


一、Spark应用组件介绍

Spark应用组件有三个:驱动器集群管理器执行器

  • 驱动器节点:有两个职责:把用户转为任务和为执行器节点调度任务
  • 执行器节点:负责在Spark作业中运作任务
  • 集群管理器:Spark依赖于集群管理器来启动执行器节点

集群管理器:为了方便多人调度时合理的进行资源管理,许多集群管理器支持队列,可以为队列定义不同优先级或容量限制,这样Spark 就可以把作业提交到相应的队列中。

集群管理器分为两种:

(1) 独立集群管理器:由一个主节点和几个工作节点组成,各自都分配一定量的内存和CPU核心。可以在一堆机器上运行Spark。

(2) Hadoop YARNHadoop 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在集群上运行的更多相关文章

  1. spark在集群上运行

    1.spark在集群上运行应用的详细过程 (1)用户通过spark-submit脚本提交应用 (2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法 (3)驱动器程序与集群管 ...

  2. Spark学习之在集群上运行Spark

    一.简介 Spark 的一大好处就是可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力.好在编写用于在集群上并行执行的 Spark 应用所使用的 API 跟本地单机模式下的完全一样.也就是说 ...

  3. Eclipse提交代码到Spark集群上运行

    Spark集群master节点:      192.168.168.200 Eclipse运行windows主机: 192.168.168.100 场景: 为了测试在Eclipse上开发的代码在Spa ...

  4. 在集群上运行Spark

    Spark 可以在各种各样的集群管理器(Hadoop YARN.Apache Mesos,还有Spark 自带的独立集群管理器)上运行,所以Spark 应用既能够适应专用集群,又能用于共享的云计算环境 ...

  5. [Spark Core] 在 Spark 集群上运行程序

    0. 说明 将 IDEA 下的项目导出为 Jar 包,部署到 Spark 集群上运行. 1. 打包程序 1.0 前提 搭建好 Spark 集群,完成代码的编写. 1.1 修改代码 [添加内容,判断参数 ...

  6. 将java开发的wordcount程序提交到spark集群上运行

    今天来分享下将java开发的wordcount程序提交到spark集群上运行的步骤. 第一个步骤之前,先上传文本文件,spark.txt,然用命令hadoop fs -put spark.txt /s ...

  7. 06、部署Spark程序到集群上运行

    06.部署Spark程序到集群上运行 6.1 修改程序代码 修改文件加载路径 在spark集群上执行程序时,如果加载文件需要确保路径是所有节点能否访问到的路径,因此通常是hdfs路径地址.所以需要修改 ...

  8. Spark学习之在集群上运行Spark(6)

    Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力. 2. Spark既能适用于专用集群,也可以适用于共享的云计算 ...

  9. 在local模式下的spark程序打包到集群上运行

    一.前期准备 前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客: Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分 ...

随机推荐

  1. ng2 父子组件传值 - 状态管理

    一. 父子组件之间进行直接通话 //父组件html <ul> <app-li [value] = "value" (liClick) = "liClic ...

  2. 网站搭建-云服务器ECS的使用

    1. 查看购买的云服务器实例,重置密码 2. 查找IP进行查看,此时网页时不存在的,开始配置: 3. 登录putty或其他终端,进行网页搭建,先按教程走一遍,然后再做个性化处理: #安装Apache ...

  3. 推荐几款好用的python编辑器

    1.自带的IDLE:  (1)交互式代码编辑.在>>>提示符后输入python代码,按Enter键就可以显示代码命令执行结果. (2)脚本式代码编辑.选择File菜单里的newFil ...

  4. 【API管理 APIM】如何查看APIM中的Request与Response详细信息,如Header,Body中的参数内容

    问题描述 通过APIM门户或者是Developer门户,我们可以通过Test功能测试某一个接口,通过Trace可以获取非常详细的Request,Response的信息,包含Header,X-Forwa ...

  5. ERP仓库管理的操作与设计--开源软件诞生20

    赤龙ERP库房管理讲解--第20篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon/r ...

  6. JS 计算日期相减得天数

    言简意赅不呼哨直接懂,可以封装的可以根据自己的需求封装一下 var date1="2020-10-23";var date2="2020-10-26";var ...

  7. 微服务调用之feign负载均衡及服务降级

    一,负载均衡: feign已经集成了ribbon,将service1,service2在不同端口启动多个实例可以自动负载均衡 idea: application.yml中server.port: ${ ...

  8. Linux文件操作常用命令

    一.一些文件操作命令. 1.cd /home  进入"home目录" 2.cd ../ 返回上一级目录 3.cd -  返回上次所在的目录 4.pwd 显示工程路径 5.ll 显示 ...

  9. TypeScript魔法堂:枚举的超实用手册

    前言 也许前端的同学会问JavaScript从诞生至今都没有枚举类型,我们不是都活得挺好的吗?为什么TypeScript需要引入枚举类型呢? 也许被迫写前端的后端同学会问,TypeScript的枚举类 ...

  10. vue-cli3搭建的vue项目中使用jquery

    装包:npm install jquery --save 方式一 全局使用 1)main.js中引入 // jquery import $ from 'jquery' Vue.prototype.$ ...