spark核心概念

news2024/12/23 6:56:35

DAG

所谓DAG就是有向无环图,其实就是个无环的流程,Spark的核心是根据RDD来实现的,Spark Scheduler!则为Spark核心实现的重要一环,其作用就是任务调度。Spark的任务调度就是如何组织任务去处理RDD中每个分区的数据,根据RDD的依赖关系构建DAG,基于DAG划分Stage,
将每个Stage中的任务发到指定节点运行。基于Spark的任务调度原理,可以合理规划资源利用,做到尽可能用最少的资源高效地完成任务计算。
在这里插入图片描述

job与action

在spark中,job的概念,是一个rdd从创建到最终通过action算子执行的过程,我们在一个应用程序中可能会有多个rdd经过多次转换,多次聚合,每经过一次action聚合就算一个job,job个action是一一对应关系

DAG的宽窄依赖和阶段划分

窄依赖:父RDD的一个分区的数据,全部发送给子RDD的一个分区
下面是一个典型窄依赖的关系图
在这里插入图片描述
宽依赖:父RDD的一个分区的数据,发送给子RDD的多个分区,宽依赖的别名又叫shuffle。
在这里插入图片描述
区分宽窄依赖的一个方便方法就看一个分区根部是否存在多个分叉。
spark会根据宽依赖,划分阶段,每遇到宽依赖,就会分隔成两个阶段,划分完成后,每个阶段内部一定是窄依赖,如下两个stage之间,存在一个宽依赖的关系
在这里插入图片描述

内存迭代计算

Spark内存迭代的计算概念,也就是上面说的,DAG图会基于分区和宽窄依赖关系划分阶段,
一个阶段的内部都是窄依赖,窄依赖内,如果形成前后1:1的分区对应关系,就可以产生许多内存迭代计算的管道,这些内存迭代计算的管道,就是一个个具体的执行Task,一个Task是一个具体的线程,任务跑在一个线程内,就是走内存计算了,比如上面b1到p1的tupleRDD完全有一个线程负责,既没有网络交互,也没有线程间通信,就会最高效地完成数据b1的处理.

Spark为什么比MapReduce快

  • Spark的算子丰富,MapReduce算子匮乏(Map和Reduce),MapReduce这个编程模型,很难在一套MR中处理复杂的任务.很多的复杂任务,是需要写多个MapReducei进行串联.多个MR串联通过磁盘交互数据
  • Spark可以执行内存迭代,算子之间形成DAG基于依赖划分阶段后,在阶段内形成内存迭代管道.但是MapReducel的Map和Reduce之间的交互依旧是通过硬盘来交互的.

spark并行度设置

spark并行度指示的是spark允许并行运行的task数,spark会根据并行的task数来设置分区数,一般来说,并行task数和分区数一一对应,

  • 如何设置并行度
    可以在代码中和配置文件中以及提交程序的客户端参数中设置
    优先级从高到低:
    1、代码中
    conf SaprkConf)
    conf.set(“spark.default.parallelism”,“100”)
    2、客户端提交参数中
    bin/spark-submit --conf “spark.default.parallelism=100”
    3、配置文件中
    conf/spark-defaults.conf中设置
    spark.default.parallelism 100
    4、默认(1,但是不会全部以1来跑,多数时候基于读取文件的分片数量来作为默认并行度)
    全局并行度配置的参数:
    spark.default.parallelism

注意

  • 全局并行度是推荐设置,不要针对RDD调整分区,很可能影响到内存迭代管道计算,造成额外的shuffle
  • 如果一定要针对某个RDD来调整分区,可以用之前提到过的三个算子:
    (1)repartition算子
    (2)coalesce算子
    (3)partitionBy算子
    调整也建议往下调,不要增加分区

集群中如何规划并行度

  • 设置为CPU总核心的2~10倍
    比如集群可用CPU核心是100个,我们建议并行度是200~1000
    确保是CPU核心的整数倍即可,最小是2倍,最大一般10倍或更高(适量)均可
  • 为什么要设置最少2倍?
    CPU的一个核心同一时间只能千一件事情
    所以,在100个核心的情况下,设置100个并行,就能让CPU100%出力.
    这种设置下,如果task的压力不均衡,某个task先执行完了.就导致某个cPU核心空闲
    所以,我们将Task(并行)分配的数量变多,比如800个并行,同一时间只有100个在运行,700个在等待.但是可以确保,某个task运行完了.后续有task补上,不让cpu闲下来,最大程度利用集群的资源.
    规划并行度,只看集群总CPU核数
    在pyspark中,一个task只能处理一个RDD的一个分区,有几个分区,就有几个task来处理它,一个rdd如果有两个分区,就会有两个task来处理它。

Spark的任务调度

Spark的任务,由Driver进行调度,这个工作包含:
1、逻辑DAG产生
2、分区DAG产生
3、Task划分
4、将Task分配给Executor并监控其工作
在这里插入图片描述
如上图
Driver被构建出来后,构建SparkContext(执行环境入口对象),之后基于DAG Scheduler(DAG调度器)构建逻辑Task分配,基于TaskScheduler(Task调度器)将逻辑Task分配到各个Executor.上干活,并监控它们,Worker(Executor)被TaskScheduler管理监控,听从它们的指令干活,并定期汇报进度,DAG调度器和Task调度器是spark的核心调度器,其中DAG调度器决定了task数和任务cpu分配,task调度器只是决定task分配到哪个executor。

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

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

相关文章

鱼眼相机的测距流程及误差分析[像素坐标系到空间一点以及测距和误差分析]

由于最近在整理单目测距的内容,顺手也总结下鱼眼相机的测距流程和误差分析,如果有错误,还请不吝赐教。 参考链接: 鱼眼镜头的成像原理到畸变矫正(完整版) 相机模型总结(针孔、鱼眼、全景) 三维…

医院设备管理平台:智能化管理,助推医院高效运行

在医疗科技飞速发展的今天,医院设备管理成为医院高效运营和优质服务的重要保障。信鸥科技凭借其深厚的技术积累和行业洞察力,推出了一款创新的医院设备管理平台,旨在帮助医院实现设备的智能化管理,提升运营效率,保障患…

WIFI驱动移植实验: openssl库的移植(wpa_supplicant 依赖库)

一. 简介 前面实现了WIFI驱动的移植,而连接某个WIFI热点上就需要用到 wpa_supplicant 工具,所以,本文开始为 移植 wpa_supplicant 工具做准备。 wpa_supplicant 依赖于 openssl库 与 libnl库,因此,需要移植一下open…

深入解析Spring MVC: 原理、流程【面试版】

什么是SpringMV? 1.是一个基于MVC的web框架; 2.是spring的一个模块,是spring的子容器,子容器可以拿父容器的东西,但是反过来不可; 2.SpringMVC的前端控制器是DispatcherServlet,用于分发请求。使开发变…

无需插件就能实现异构数据库的互联互通?(powershell妙用)

前两天在DBA群里有大佬分享了利用Oracle Database Gateway(透明网关)实现sqlserver和oracle 的数据交互,这里让我想到前些年写的一些powershell脚本用来做sqlserver和oracle的数据交互,powershell是windows自带的一个脚本工具&…

安防监控视频汇聚平台EasyCVR启用图形验证码之后如何调用login接口?

视频综合管理平台EasyCVR视频监控系统支持多协议接入、兼容多类型设备,平台可以将区域内所有部署的监控设备进行统一接入与集中汇聚管理,实现对监控区域的实时高清视频监控、录像与存储、设备管理、云台控制、语音对讲、级联共享等,在监控中心…

MongoDB Atlas维护指南:常见类型、注意事项与窗口设置

为了给Atlas用户更好的产品体验,MongoDB产品团队会进行定期维护。 本文将会介绍: 常见维护项目种类及频率,注意事项维护期间的影响及建议维护窗口设置说明维护告警设置和邮件通知范例 维护窗口常见项目 定期SSL证书轮换软件升级&#xff…

不要盲目开抖店,这才是开店的正确流程,2024全新版教程

我是王路飞。 抖音小店和视频号小店,我更建议没有经验的新手去做抖音小店。 虽然现在抖音小店不属于是一个蓝海项目了,但它依旧是我们普通人借助抖音流量变现非常重要的一个渠道,甚至没有之一。 至于视频号小店,可以说是当下最…

康耐视visionpro-CogPMAlignTool工具详细说明

CogPMAlignTool功能: 匹配产品形状,实现产品定位。 CogPMAlignTool操作说明: 1.打开工具栏,双击或点击鼠标拖拽添加CogPMAlignTool工具 ②.添加输入图像:右键“链接到”或以连线拖拽的方式选择相应输入图像 ③.点击“抓取训练图像”按钮获取训练图像 ④.在图像下拉列表中…

集体出走的Stability AI 发布全新代码大模型,3B以下性能最优,超越Code Llama和DeepSeek-Coder

Stability AI又有新动作!程序员又有危机了? 3月26日,Stability AI推出了先进的代码语言模型Stable Code Instruct 3B,该模型是在Stable Code 3B的基础上进行指令调优的Code LM。 Stability AI 表示,Stable Code Instru…

frp 内网穿透

一、公网服务器运行frps -c my.ini my.ini文件代码 [common] bind_port 7000 #公网服务器开启的监听端口 二、在已经拿到shell的内网服务器1,即内网的web服务器运行 frpc -c frpc.ini frpc.ini文件代码 [common] server_addr 192.168.23.134 #公网服务…

vue 借助vue-amap插件对高德地图的简单使用

需求:实现点击获取经纬度、定位、对特殊位置标点及自定义信息窗体功能。 高德地图的官网API:概述-地图 JS API 1.4 | 高德地图API vue-amap的中文文档:组件 | vue-amap 实现: 1、安装vue-amap插件 npm install vue-amap --save…

linux之Haproxy

介绍 haproxy是一种开源的TCP和HTTP负载均衡代理服务器软件。客户端通过Haproxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器 下载Haproxy yum install haproxy -y 开启服务 systemctl start haproxy 配…

Android笔记(三十):PorterDuffXfermode实现旋转进度View

背景 核心原理是使用PorterDuffXfermode Path来绘制进度,并实现圆角 效果图 Android笔记(三十)效果演示 进度条绘制步骤 将ImageView矩形七个点的坐标存储起来(configNodes) 他们对应着7个不同的刻度,每个刻度的值 i * &#…

确保未来安全:应对云安全的复杂性

云是业务运营的重要组成部分,它改变了组织扩展、创新和适应的方式。然而,其影响力日益增长的广度和深度不仅仅局限于商业领域。云环境是我们日常生活中不可或缺的一部分,负责存储和传输全球平民最敏感的数据。随着大量企业和个人利用云&#…

【Faster Bing】Bing 搜索结果取消跳转至 bing.com/ck

更快的 Bing (Faster Bing) 1. 介绍 项目地址: GitHub: https://github.com/jiang-taibai/faster-bingGitee: https://gitee.com/jiang-taibai/faster-bingGreasyFork: https://greasyfork.org/en/scripts/490999-faster-bing 在使用 Bing 搜索时,Bin…

HarmonyOS 应用开发之UIAbility组件与UI的数据同步

基于当前的应用模型,可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 使用EventHub进行数据通信:在基类Context中提供了EventHub对象,可以通过发布订阅方式来实现事件的传递。在事件传递前,订阅者需要先进行订阅&a…

Discord多个帐户怎么防止被封号?

Discord 是一款免费的语音和文本聊天应用程序。它是一个游戏聊天应用程序和社区,最初是游戏的语音和IM服务,然后转向直播,然后是游戏商店的社区平台。它成为游戏玩家在游戏中交流和协作的首选工具。下面将为你介绍如何同时使用多个discord账号…

武汉星起航深耕亚马逊,助力新手卖家成功起航

在跨境电商的浪潮中,亚马逊平台凭借其强大的品牌影响力和广阔的市场前景,吸引了无数创业者的目光。然而,对于缺乏经验的新手卖家而言,如何在竞争激烈的亚马逊市场中脱颖而出,成为了一道难题。武汉星起航电子商务有限公…

WordPress Git主题 响应式CMS主题模板

分享的是新版本,旧版本少了很多功能,尤其在新版支持自动更新后,该主题可以用来搭建个人博客,素材下载网站,图片站等 主题特点 兼容 IE9、谷歌 Chrome 、火狐 Firefox 等主流浏览器 扁平化的设计加响应式布局&#x…