Spark在YARN上运行图解(资源调度+任务调度)及案例

前提:已经安装了spark集群,可参考上篇文章搭建:http://t.csdnimg.cn/UXBOp

一、Spark集群配置YARN

1、增加hadoop 配置文件地址

        vim spark-env.sh

        增加export HADOOP_CONF_DIR=/usr/local/soft/hadoop-3.1.1/etc/hadoop

   

2、关闭虚拟内存

cd  /usr/local/soft/hadoop-3.1.1/etc/hadoop

vim yarn-site.xml

增加以下配置:

3、同步到其他节点

scp -r yarn-site.xml node1:`pwd`
scp -r yarn-site.xml node2:`pwd`

4、启动hadoop

start-all.sh

5、yarn与standalone一样,也有两种运行方式,client与cluster

使用spark提供的模版进行测试:

client提交命令:

spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi  spark-examples_2.12-3.1.3.jar 100

cluster提交命令:

spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi  spark-examples_2.12-3.1.3.jar 100

注:100给的是task任务的数量,即分区的数量也是100,可以手动指定任意数量,如果不指定,默认是按照文件的分区数算。

二、client与cluster提交流程图解

1、spark yarn client

资源调度图解:

注意:MapReduce的资源调度是每次需要执行任务的时候去申请资源,而spark是提前申请任务所需要的所有资源。MapReduce这种方式叫细粒度执行,spark这种方式叫粗粒度执行。

任务调度图解:

 DAG Scheduler:

(1)基于Stage构建DAG,决定每个任务的最佳位置

(2)将taskset传给底层调度器TaskScheduler

(3)重新提交shuffle输出丢失的stage。

Task Scheduler:

(1)提交taskset(一组并行task)到集群运行并汇报结果

(2)出现shuffle输出lost要报告fetchfailed错误

(3)碰到straggle任务需要放到别的节点上重试

(4)为每一一个TaskSet维护一一个TaskSetManager(追踪本地性及错误信息)

更易懂的任务调度图解:

资源调度+任务调度图解: 

2、spark yarn cluster

资源调度:

名词解释:

(1)  Driver:是一个进程,我们编写的Spark应用程序就运行在Driver上,由Driver进程执行

  (2)  Executor:是在一个workernode上为某应用用启动的一个进程,该进程负责运行任务,并且负责将数据存在内存或者磁盘上。每个应用用都有各自自独立的executors 

(3)RM:ResourceManager主要作用:

         a、处理客户端请求
         b、监控NodeManager
         c、启动或监控ApplicationMaster
         d、资源的分配与调度

(4)AM:ApplicationMaster(MRAppMaster)作用:

         a、负责数据的切分
         b、为应用程序申请资源并分配内部的任务
         c、任务的监控与容错

(5)NM:NodeManager主要作用:

         a、管理单个节点上的资源
         b、处理来自ResourceManager的命令
         c、处理来自ApplicationMaster的命令

三、编写spark程序在yarn上执行

案例:计算PI

1、思路图解:

2、编写spark代码

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

import scala.util.Random

object Demo19PI {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()

    /**
     * 提交到yarn上运行,这个参数依旧不用设置
     */
//    conf.setMaster("local")
    conf.setAppName("yarn submit")

    val context = new SparkContext(conf)

    //设置生成点的个数 1000000
    val list: Range.Inclusive = 0 to 1000000
    //将scala的序列集合变成rdd
    val rangeRDD: RDD[Int] = context.parallelize(list)

    //随机生成正方形内的点
    val dianRDD: RDD[(Double, Double)] = rangeRDD.map((i: Int) => {
      val x: Double = Random.nextDouble() * 2 - 1
      val y: Double = Random.nextDouble() * 2 - 1
      (x, y)
    })
//    println(dianRDD.count())

    //取出圆中点的个数
    val yuanZuoRDD: RDD[(Double, Double)] = dianRDD.filter {
      case (x: Double, y: Double) =>
        x * x + y * y < 1
    }
//    println(yuanZuoRDD.count())

    //计算PI
    println(s"PI的值为:${(yuanZuoRDD.count().toDouble / dianRDD.count()) * 4}")

    /**
     * spark-submit --class com.shujia.core.Demo19PI --master yarn --deploy-mode client  spark-1.0.jar
     */

  }

}

3、将程序打包上传到linux中,使用以下命令在yarn上运行

spark-submit --class com.shujia.core.Demo19PI --master yarn --deploy-mode client spark-1.0.jar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/641188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[杂项]优化AMD显卡对DX9游戏(天谕)的支持

目录 关键词平台说明背景RDNA 1、2、3 架构的显卡支持游戏一、 优化方法1.1 下载 二、 举个栗子&#xff08;以《天谕》为例&#xff09;2.1 下载微星 afterburner 软件 查看游戏内信息&#xff08;可跳过&#xff09;2.2 查看D3D9 帧数2.3 关闭游戏&#xff0c;替换 dll 文件2…

从0开始linux(3)——如何读写文件

欢迎来到博主的专栏——从0开始linux 博主ID&#xff1a;代码小豪 文章目录 创建普通文件用文本编辑器nano写入文件如何读取文件cat命令less命令head和tail 我们前面已经了解和如何操作文件&#xff0c;但是目前认识的文件类型分为两类&#xff0c;一类是目录文件、另一类是普通…

【数据结构】数据结构中的隐藏玩法——栈与队列

前言&#xff1a; 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我…

UE5 像素流web 交互2

进来点个关注不迷路谢谢&#xff01; ue 像素流交互多参数匹配 主要运用像素流的解析json 状态&#xff1a; 测试结果&#xff1a; 浏览器控制台&#xff1a; 接下来编写事件传递 关注下吧&#xff01;

webshell工具-冰蝎流量特征和加密方式

一、冰蝎原理 1.1 简介 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端&#xff0c;由于通信流量被加密&#xff0c;传统的WAF、IDS 设备难以检测&#xff0c;给威胁狩猎带来较大挑战。冰蝎其最大特点就是对交互流量进行对称加密&#xff0c;且加密密钥是由随…

【颜色】windows自带画图中的颜色编辑

结论&#xff1a;颜色编辑中的色调、饱和度和亮度&#xff0c;是与HSL颜色空间保持一致。 如下图所示&#xff0c;他有色调、饱和度和亮度&#xff0c;其数值范围均为[0,240]。 首先我使用HSV进行模拟&#xff0c;发现效果和数值对不上。 因此改换HSL进行模拟&#xff0c;其数…

NodeJS安装并生成Vue脚手架(保姆级)

文章目录 NodeJS下载配置环境变量Vue脚手架生成Vue脚手架创建项目Vue项目绑定git 更多相关内容可查看 NodeJS下载 下载地址&#xff1a;https://nodejs.org/en 下载的速度应该很快&#xff0c;下载完可以无脑安装&#xff0c;以下记得勾选即可 注意要记住自己的安装路径&…

每日AIGC最新进展(10):符号音乐生成SYMPLEX、新型图像编辑数据集ReasonPix2Pix、角色一致性插画生成、高级的风格个性化扩散模型

Diffusion Models专栏文章汇总&#xff1a;入门与实战 SYMPLEX: Controllable Symbolic Music Generation using Simplex Diffusion with Vocabulary Priors http://arxiv.org/abs/2405.12666v1 本文介绍了一种新的符号音乐生成方法&#xff0c;名为SYMPLEX&#xff0c;它基于…

台湾省军事演习路径规划:A*算法在复杂地形中的应用

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

在MySQL中,Linux表同步到Windows,有大小写的就没同步的详细解决方案

在 Linux 系统上&#xff0c;文件名是区分大小写的&#xff0c;而在 Windows 系统上&#xff0c;文件名通常不区分大小写。导致在从 Linux 同步文件到 Windows 时&#xff0c;有些文件因为名称冲突而无法同步。为了有效解决这个问题&#xff0c;可以采取以下方法&#xff1a; …

1098: 堆的判断

解法&#xff1a; 堆是完全二叉树 用数组来存储 然后用定义判定 #include<iostream> #include<vector> using namespace std; int main() {int n;cin >> n;vector<int> vec(n);for (int i 0; i < n; i) cin >> vec[i];for (int i 0; i &…

【Linux】关于获取进程退出状态中的core dump标志补充

通过 wait/waitpid 可以获取子进程的退出状态, 从而判断其退出结果. 记录退出状态的 int 变量 status 的使用情况如下图所示: 如果是收到信号终止的话, 低 7 位为收到的终止信号, 而低第 8 位为 core dump 标志, core dump 标志有什么用呢? core dump 标志只存 0/1, 表示是否…

c#自动生成缺陷图像-添加新功能(可从xml直接提取目标数据,然后进行数据离线增强)--20240524

在进行深度学习时,数据集十分重要,尤其是负样本数据。 故设计该软件进行深度学习数据预处理,最大可能性获取较多的模拟工业现场负样本数据集。 该软件基于VS2015、.NETFrameWork4.7.2、OpenCvSharp1.0.0.0、netstandard2.0.0.0、SunnyUI3.2.9.0、SunnyUI.Common3.2.9.0及Ope…

ClickHouse实战处理(一):MergeTree表引擎

MergeTree作为家族系列最基础的表引擎&#xff0c;主要有以下特点&#xff1a; 存储的数据按照主键排序&#xff1a;创建稀疏索引加快数据查询速度。支持数据分区&#xff0c;可以通过PARTITION BY语句指定分区字段。支持数据副本。支持数据采样。 一、MergeTree分类和建表参…

python水果分类字典构建指南

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、理解需求 三、构建字典 1. 数据结构选择 2. 代码实现 3. 结果展示 四、总…

C++实现基础二叉搜索树(并不是AVL和红黑树)

本次实现的二叉搜索树并不是AVL数和红黑树&#xff0c;只是了解流程和细节。 目录 二叉搜索树的概念K模型二叉搜索树的实现二叉搜索树的架构insert插入find 查找中序遍历Inorder删除earse替换法的思路情况一 &#xff1a;假如要删除节点左边是空的。在左边时在右边时 情况二&a…

JavaScript-数组的增删改查

数组的操作一共有四种&#xff1a; 查询数组数据修改数组中元素的值数组添加新的数据删除数组中的元素 数组的初始化 有些编程语言的数组初始化是用{}包着的&#xff0c;而JS的数组初始化用[] let num[2,6,1,77,52,25,7]; 数组的查询 想要具体查询数组中的某个元素 可以用数…

【Spring Cloud】全面解析服务容错中间件 Sentinel 持久化两种模式

文章目录 推送模式本地文件持久化&#xff08;拉模式&#xff09;配置yml编写处理类添加配置演示 配置中心持久化&#xff08;推模式&#xff09;修改nacos在sentinel中生效引入依赖配置文件 修改sentinel在nacos中生效下载源码更改代码演示 总结 推送模式 Sentinel 规则的推送…

【JavaEE 初阶(十)】JVM

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多进阶知识 目录 1.前言2.JVM内存区域划分3.类加载3.1双亲委派模型 4.垃圾回收&#xff08;GC&#xff0…

结构体变量的创建和初始化以及内存对齐

前言 嗨&#xff0c;我是firdawn&#xff0c;在本章中我们将介绍&#xff0c;结构体变量的创建和初始化&#xff0c;结构成员访问操作符以及结构体的内存对齐&#xff0c;下面是本章的思维导图&#xff0c;接下来&#xff0c;让我们开始今天的学习吧&#xff01; 一&#xf…