本地提交spark_Spark 数据本地化级别

6faa98d4492115a8a010028ad5872e01.png

RDD 源码

大家可以看到源码中的第五条注释说明,翻译过来的大概意思是提供一系列的最佳计算位置。

我之前一直不太清楚 spark 是如何内部实现的,今天就带领大家来看一看 spark 的本地数据化级别在任务执行中的演变过程。

1 数据的本地化级别有哪些?

Spark 中任务的处理需要考虑数据的本地性,以 spark 1.6 为例,目前支持一下几种。(中英文排版很头疼,谁来帮帮我啊)

PROCESS_LOCAL 进程本地化,表示 task 要计算的数据在同一个 Executor 中。

NODE_LOCAL 节点本地化,速度稍慢,因为数据需要在不同的进程之间传递或从文件中读取。分为两种情况,第一种:task 要计算的数据是在同一个 worker 的不同 Executor 进程中。第二种:task 要计算的数据是在同一个 worker 的磁盘上,或在 HDFS 上恰好有 block 在同一个节点上。如果 Spark 要计算的数据来源于 HDFSD 上,那么最好的本地化级别就是 NODE_LOCAL。

NO_PREF 没有最佳位置,数据从哪访问都一样快,不需要位置优先。比如 Spark SQL 从 Mysql 中读取数据。

RACK_LOCAL 机架本地化,数据在同一机架的不同节点上。需要通过网络传输数据以及文件 IO,比 NODE_LOCAL 慢。情况一:task 计算的数据在 worker2 的 EXecutor 中。情况二:task 计算的数据在 work2 的磁盘上。

ANY 跨机架,数据在非同一机架的网络上,速度最慢。

如果不是很清楚,我画(造)了一张图放在这以供大家理解。

ee95b95b1801a9415ddc356a4c74da08.png

2 Spark 的数据本地化由谁来负责呢?

val rdd1 = sc.textFile("hdfs://tsl...") rdd1.cache()rdd1.map.filter.count()

上面这段简单的代码,背后其实做什么很多事情。Driver 的 TaskScheduler 在发送 task 之前,首先应该拿到 rdd1 数据所在的位置,rdd1 封装了这个文件所对应的 block 的位置,DAGScheduler 通过调用 getPrerredLocations() 拿到 partition 所对应的数据的位置,TaskScheduler 根据这些位置来发送相应的 task。

具体的解释:

DAGScheduler 切割Job,划分Stage, 通过调用 submitStage 来提交一个Stage 对应的 tasks,submitStage 会调用 submitMissingTasks, submitMissingTasks 确定每个需要计算的 task 的preferredLocations,通过调用 getPreferrdeLocations() 得到 partition 的优先位置,就是这个 partition 对应的 task 的优先位置,对于要提交到 TaskScheduler 的 TaskSet 中的每一个task,该 task 优先位置与其对应的 partition 对应的优先位置一致。

TaskScheduler 接收到了 TaskSet 后,TaskSchedulerImpl 会为每个 TaskSet 创建一个 TaskSetManager 对象,该对象包含taskSet 所有 tasks,并管理这些 tasks 的执行,其中就包括计算 TaskSetManager 中的 tasks 都有哪些 locality levels,以便在调度和延迟调度 tasks 时发挥作用。

总的来说,Spark 中的数据本地化是由 DAGScheduler 和 TaskScheduler 共同负责的。

3

计算节点与输入数据位置的关系,下面以一个图来展开 spark 是如何让进行调度的。这一个过程会涉及 RDD, DAGScheduler , TaskScheduler。

e72641b868db40d091b789d116fcf0b1.png

第一步:PROCESS_LOCAL

TaskScheduler 根据数据的位置向数据节点发送 task 任务。如果这个任务在 worker1 的 Executor 中等待了 3 秒。(默认的,可以通过spark.locality.wait 来设置),可以通过 SparkConf() 来修改,重试了 5 次之后,还是无法执行,TaskScheduler 就会降低数据本地化的级别,从 PROCESS_LOCAL 降到 NODE_LOCAL。

第二步:NODE_LOCAL

TaskScheduler 重新发送 task 到 worker1 中的 Executor2 中执行,如果 task 在worker1 的 Executor2 中等待了 3 秒,重试了 5 次,还是无法执行,TaskScheduler 就会降低数据本地化的级别,从 NODE_LOCAL 降到 RACK_LOCAL。

第三步:RACK_LOCAL

TaskScheduler重新发送 task 到 worker2 中的 Executor1 中执行。

第四步:

当 task 分配完成之后,task 会通过所在的 worker 的 Executor 中的 BlockManager 来获取数据。如果 BlockManager 发现自己没有数据,那么它会调用 getRemote() 方法,通过 ConnectionManager 与原 task 所在节点的 BlockManager 中的 ConnectionManager先建立连接,然后通过TransferService(网络传输组件)获取数据,通过网络传输回task所在节点(这时候性能大幅下降,大量的网络IO占用资源),计算后的结果返回给Driver。这一步很像 shuffle 的文件寻址流程,Spark 的 shuffle 文件寻址流程

4

TaskScheduler在发送task的时候,会根据数据所在的节点发送task,这时候的数据本地化的级别是最高的,如果这个task在这个Executor中等待了三秒,重试发射了5次还是依然无法执行,那么TaskScheduler就会认为这个Executor的计算资源满了,TaskScheduler会降低一级数据本地化的级别,重新发送task到其他的Executor中执行,如果还是依然无法执行,那么继续降低数据本地化的级别...

如果想让每一个 task 都能拿到最好的数据本地化级别,那么调优点就是等待时间加长。注意!如果过度调大等待时间,虽然为每一个 task 都拿到了最好的数据本地化级别,但是我们 job 执行的时间也会随之延长。

下面是官方提供的参数说明:

35840e9c502365fab8c8c351e15b76c5.png

可以在代码里面这样设置:

new SparkConf.set("spark.locality.wait

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

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

相关文章

Win11怎么设置桌面软件小图标 Win11设置桌面软件小图标教程

Win10系统升级Win11系统之后,用户发现Win11比Win10多了非常多的功能,特别是一些可以自定义的功能,这是都是微软为了让用户有更好的体验感,让用户可以根据自己的喜欢进行设置调节,下面就给大家带来Win11桌面软件设置小图…

街舞中的rolling机器人_首家!爆点!奈雪の茶、蛙小侠..开业倒计时!街舞PK…这个六一就差你来围观了...

说起济南的各大shopping mall世茂广场绝对是最得人心的总能迅速集结当下最火爆的品牌各种线上线下活动也是搞得新颖又有趣五一的“刘看山”还没结束呢这就马不停蹄的要上新活动了前方预警⚠奈雪の茶等一大波新店又要入驻啦 还有 “奔跑吧爸爸”亲子活动、街舞大赛 ……统统都在…

Win11系统自动暂停更新后想继续怎么办 Win11系统重新启动更新教程

因为Win10系统跟Win11系统还是差别很大的原因,系统出现了问题很多人都不知道再怎么解决,有的用户就遇到Win11系统自动更新后突然暂停了想继续更新但是不知道去哪里操作的问题,下面给大家带来Win11系统自动暂停更新后如何继续更新的教程。 教…

简述isodata算法的原理_基于UWB技术的室内定位方法简述

1. UWB室内定位概述:UWB室内定位技术与传统通信技术有极大的差异,它不需要使用传统通信体制中的载波,而是通过发送和接收具有纳秒或纳秒级以下的极窄脉冲来传输数据,从而具有GHz量级的带宽。超宽带室内定位可用于各个领域的室内精…

如何在Win11重置系统中保留个人文件 Win11重置系统保留个人文件方法

Win1系统是目前很多用户都在使用的电脑操作系统,但是最近安装的Win11系统有很多bug,很多用户想重置系统,但是不知道如何保留个人文件,下面小编就为大家详细的介绍一下,有需要的快来看看吧! Win11重置系统保留个人文件…

slider获取点击 unity_Unity基础 | 70分钟带你轻松入门

Hello . 大家好今天给大家分享Unity3D的基础入门我是麦田这次录制的教程是面向零基础,想上手Unity的同学。所以就做了这一次大串讲。(只此一回,别无分号了。)时长1小时10分钟,我的建议是一口气看完。(因为我也是一口气讲完的)大家可以点击文末…

win7电脑文件夹属性没有安全选项的解决方法

在win7系统中,我们可以在文件夹属性的安全选项里对文件夹进行修改、读取、写入等权限的设置,但是很多朋友在准备设置权限时发现安全选项找不到了,这时候我们可以通过输入命令的方式将它找回来,下面一起来看看win7电脑文件夹属性没…

达梦数据库导入oracle数据_达梦数据库助力加速石油石化行业数字化转型升级

2020中国石油石化企业信息技术交流大会暨数字化转型、智能化发展高峰论坛于10月22日-23日在北京召开,武汉达梦数据库有限公司(简称达梦公司)作为国产数据库代表企业受邀参与此次活动,并以“国产数据库能源行业解决方案”为主题报告,为来宾介绍…

win7宽带已连接但是有感叹号无法上网的解决方法

网络图标显示感叹号是很常见的问题,可是有些win7 32位旗舰版用户已经连拨号连接成功了,也显示“已连接”,可是网络图标依旧还有感叹号,并且提示无网络访问,网页也打不开,网络诊断后提示dns服务器未响应或者…

在lcd屏幕上窗口显示一个bitmap_SmartDrop——LED/LCD大屏内容投屏管理软件

产品简介SmartDrop是飞画推出的一款针对拼接大屏(LCD/LED)进行内容投屏管理的播控软件,支持LCD/LED两种应用环境,用户可以根据屏幕的使用场景进行选择安装LCD-Drop或LED-Drop。SmartDrop支持超高分辨率,显示窗口分辨率自定义,远程可视化控制&…

Win7系统桌面右下角托盘图标不显示原因和解决方法

有位Ghost win7系统用户说开机桌面右下角托盘图标不见了,不显示托盘图标对操作有所影响,每次需要点击“←”按钮才可以显示,过一会又自动消失,什么原因导致的呢?出现这样的情况是由于系统中设置了隐藏任务栏图标。针对此问题&…

复杂电路简化经典例题_【中考物理】电路简化的10大原则和7大步骤

电路问题是初中物理比较难的知识,也是中考很重要的一部分。很多同学遇到电路类的题目,摆在面前的第一个问题就是不会简化电路图。今天给大家分享电路简化的10大原则和7大步骤,希望能够帮你解决这个难题!电路简化的10大基本原则初中…

猎豹浏览器截图在哪 猎豹浏览器如何截图

猎豹浏览器是一款非常不错网页浏览器,一般用户在网页上看到喜欢的画面时会选用一些截图软件来截取画面,若是电脑上没有截图软件,也不方便使用QQ截图的话,那不妨试试浏览器自带的截图功能,可能很多用户并不知道有这么一…

贪吃蛇的编程python_python实现贪吃蛇游戏

本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下本文稍作改动,修复一些bug,原文链接:python实现贪吃蛇游戏#!/usr/bin/env python#__*__ coding: utf-8 __*__import pygame,sys,time,ran…

Win10提示不是有效的字体文件怎么解决

最近有用户跟小编反应自己打开Win10系统Font字体文件夹预览字体时,突然提示不是有效的字体文件,这是什么情况?下面小编就给大家分享一下Win10提示不是有效的字体文件的解决方法。 Win10提示不是有效的字体文件怎么解决 解决方法: 1、查看…

单关闭功能_广告弹窗关闭

相信现在大部分电脑都安装360安全卫士和搜狗拼音输入法,关于这两款软件各有吐槽,最讨厌的莫过于莫名奇妙的各种广告弹窗,让人不厌其烦。因为我们是免费,所以不要渴求太多。360安全卫士广告弹窗关闭办法1、打开360安全卫士点击右上…

win7怎么解压rar文件_win7解压rar文件的方法

大家知道win7怎么解压rar文件?rar是一种常用的文件压缩与归档的私有格式,用于数据压缩与归档打包。加快传输速度,我们都会将文件进行压缩。但最近有Win7系统用户反映收到rar文件,却不知道w怎么解压rar文件?其实只需安装一个支持解压缩rar文…

忽视大小写函数_使用率低但功能强大的6个Excel函数公式应用技巧解读!

在Excel函数公式中,有部分函数的使用率是比较低的,但是其功能也是非常强大的。一、Median函数。功能:返回一组数的中值。中值就是一组数的中间数值,如果参数包含的数值是偶数,Median函数将返回位于中间两个值的平均值。…

win7的开机启动项怎么管理 win7管理开启启动项的方法

win7纯净版系统很多软件都默认设置为开机启动项,随着安装的程序越来越多,可能添加的开机启动项越来越多,这样就拖慢系统运行速度。减少开机启动项可以加快开机速度,所以我们需要管理好开机启动项,关闭不必要的开机启动…

谷歌浏览器无网络连接 打不开网页解决办法

不知道用户在使用的时候有没有遇到无法连接网络的问题,今天小编就会与大家一起来分享一下,在使用谷歌浏览器时,如果出现无网络连接的问题时,要如何解决,首先用户可以检查一下自己的网络情况,如果这些都没有…