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.Randomobject Demo19PI {def main(args: Array[String]): Unit = {val conf = new SparkConf()/*** 提交到yarn上运行,这个参数依旧不用设置*/
//    conf.setMaster("local")conf.setAppName("yarn submit")val context = new SparkContext(conf)//设置生成点的个数 1000000val list: Range.Inclusive = 0 to 1000000//将scala的序列集合变成rddval rangeRDD: RDD[Int] = context.parallelize(list)//随机生成正方形内的点val dianRDD: RDD[(Double, Double)] = rangeRDD.map((i: Int) => {val x: Double = Random.nextDouble() * 2 - 1val 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())//计算PIprintln(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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8s基本概念初识

K8S基本概念 Container&#xff08;容器&#xff09; 容器是一种便携式、轻量级的操作系统级虚拟化技术。它使用命名空间&#xff08;namespaces&#xff09;来隔离不同的软件运行环境&#xff0c;并通过镜像&#xff08;images&#xff09;自包含软件的运行环境。容器技术使…

【图像超分】论文精读:Residual Non-local Attention Networks for Image Restoration(RNAN)

第一次来请先看这篇文章:【超分辨率(Super-Resolution)】关于【超分辨率重建】专栏的相关说明,包含专栏简介、专栏亮点、适配人群、相关说明、阅读顺序、超分理解、实现流程、研究方向、论文代码数据集汇总等) 文章目录 前言Abstract1 INTRODUCTION2 RELATED WORK3 RESIDU…

51单片机系统练习

头文件内容&#xff1a; /*-------------------------------------------------------------------------- AT89X52.HHeader file for the low voltage Flash Atmel AT89C52 and AT89LV52. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights …

JVM学习-虚拟机层面看String

String基本特性 String字符串&#xff0c;使用一对“”引起来表示 String s1 “lotus”; //字面量定义方式String s2 new String(“hello”) String声明为final,不可被继承String实现了Serializable接口&#xff0c;表示字符串支持序列化&#xff0c;实现Comparable接口&…

供应链金融模式学习资料

目录 产生背景 供应链金融的诞生 供应链金额的六大特征

结构安全预警?事前发现?人工观测VS自动化监测,谁更胜一筹?

人工检测是依靠目测检查或借助于便携式仪器测量得到的信息&#xff0c;但是随着整个行业的发展&#xff0c;传统的人工检测方法已经不能满足检测需求&#xff0c;从人工检测到自动化监测已是必然趋势。 a. 从检测方式看 人工检测需要耗费大量的精力&#xff0c;从摆放检测工具到…

Golang | Leetcode Golang题解之第110题平衡二叉树

题目&#xff1a; 题解&#xff1a; func isBalanced(root *TreeNode) bool {return height(root) > 0 }func height(root *TreeNode) int {if root nil {return 0}leftHeight : height(root.Left)rightHeight : height(root.Right)if leftHeight -1 || rightHeight -1 …

最热门好用骨传导耳机推荐!!分享六大实用选购技巧助你挑选!

耳机基本是每人人手一台&#xff0c;不管是在地铁上还是在公交上&#xff0c;都可以看到很多人戴着耳机度过空余的时光&#xff0c;甚至现在人们在耳机的选择方面更加偏向于骨传导耳机&#xff0c;开放耳道的奇特设计在户外佩戴的时候可以更好的感知到周围的环境音&#xff0c;…

java标准库介绍

Java 提供了一个丰富且功能强大的标准库,也称为 Java API(Application Programming Interface)。这些库涵盖了广泛的功能,从基础数据结构和集合,到并发编程、网络通信、图形界面和XML处理等。以下是一些最基本和常用的 Java 库和包: 1. java.lang 包 java.lang 包是 Ja…

java单元测试:JUnit测试运行器

JUnit测试运行器&#xff08;Test Runner&#xff09;决定了JUnit如何执行测试。JUnit有多个测试运行器&#xff0c;每个运行器都有特定的功能和用途。 1. 默认运行器 当没有显式指定运行器时&#xff0c;JUnit会使用默认运行器&#xff0c;这在JUnit 4和JUnit 5之间有所不同…

基于多模态MRI中深层语义和边缘信息融合的脑肿瘤分割 | 文献速递-深度学习肿瘤自动分割

Title 题目 Brain tumor segmentation based on the fusion of deep semantics and edge information in multimodal MRI 基于多模态MRI中深层语义和边缘信息融合的脑肿瘤分割 01 文献速递介绍 医学图像分割是医学图像处理领域的重要课题。其中&#xff0c;脑肿瘤分割旨在…

基础5 探索JAVA图形编程桌面:字符操作组件详解

在繁华都市的一个角落&#xff0c;卧龙和凤雏相聚在他们常去的台球厅。灯光洒在绿色的台球桌上&#xff0c;彩色的台球整齐地排列着&#xff0c;仿佛在等待着一场激烈的角逐。 卧龙轻轻地拿起球杆&#xff0c;微微瞄准&#xff0c;然后用力一击&#xff0c;白球带着一股强大的力…

C#_库的引用

类库的引用 还可以自己引用类库&#xff1a;解决方案-添加-新建项目 主程序 using System; using System.Windows.Forms; using Tools;namespace ConsoleApp2 {class Program{static void Main(string[] args){//Console.WriteLine("helloword");// Form form ne…

[力扣]——70.爬楼梯

题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 本题较为简单&#xff0c;主要用到递归思想 int fun(int n,int memo[]) {if(memo[n]!-1) //如果备忘录中已经有记录了…

MVCC相关

文章目录 前情要点基于什么引擎并发事务产生的问题不可重复读和幻读区别Next-Key Lock的示例解决并发事务采用的隔离级别当前读(Current Read)快照读(Snapshot Read)参考 MVCC定义表里面的隐藏字段由db_roll_ptr串成的版本链ReadView可见性算法mvcc的可见性算法为什么要以提交的…

Java封装

什么是封装&#xff1f; 封装是指在将对象的状态信息隐藏在对象内部&#xff0c;不允许外部程序直接访问对象内部的信息&#xff0c;而是通过该类所提供的方法来实现对内部信息的操作和访问 封装的作用 隐藏类的实现细节 让使用者只能通过事先预定的方法来访问数据&#xff0c…

WMI技术介绍以及使用WMI技术获取系统信息

WMI简介 Windows Management Instrumentation&#xff08;WMI&#xff09;是Microsoft Windows操作系统中一个强大的管理框架&#xff0c;它允许管理员以及开发者以标准化的方式访问和控制系统的各种硬件、操作系统组件、应用程序以及网络资源。WMI是基于Web-Based Enterprise…

React Suspense与Concurrent Mode:异步渲染的未来

React的Suspense和Concurrent Mode是React 16.8及更高版本引入的概念&#xff0c;旨在提升用户体验和性能&#xff0c;特别是在处理异步数据加载和动画时。它们是React的下一代渲染策略的一部分&#xff0c;目的是实现更流畅的交互和更高效的资源调度。 Suspense Suspense是一…

Linux之单机项目部署

1、虚拟机&#xff08;VMware&#xff09;创建Linux系统 1.1、创建虚拟机 1.2、配置虚拟机IOS映射文件 1.3、虚拟机内部相关配置 等待加载即可&#xff0c;加载完后会弹出图形化界面&#xff0c;如图&#xff1a; 注意&#xff1a;一般我们做为管理员使用ROOT账号来操作&#x…