【Spark调优】数据本地化与参数调优
数据本地化对于Spark Job性能有着巨大的影响,如果数据以及要计算它的代码是在一起的,那么性能当然会非常高。但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机器上。移动代码到其匹配的数据节点,会比移动大量数据到代码所在的节点上去,速度要快得多,因为代码比较小。Spark也正是基于这个数据本地化的原则来构建task调度算法。
数据本地化,是指数据离计算它的代码距离有多近,有几种数据本地化级别:
1、PROCESS_LOCAL:数据和计算它的代码在同一个JVM进程中,对应spark是指的在一个executor内,这种距离最近,性能最好。
2、NODE_LOCAL:数据和计算它的代码在一个节点上,但是不在一个进程中,比如在不同的executor进程中,或者是数据在HDFS文件的block中,这种距离远些,性能次之。
尽量控制在前2种。 如下计算代码和匹配数据距离依次更远,性能依次变的更差。
3、NO_PREF:从任何地方访问数据速度都是一样,不关心数据的位置。
4、RACK_LOCAL:数据和计算它的代码在一个机架上。
5、ANY:数据可能在任意地方,比如其他网络环境内,或者其他机架上。
注:Spark UI中,在stage中看task列表,Locality Level列可以看到该task的数据本地化级别。
实际使用过程中,资源是有限的。
例如,如果一个executor在某一时刻已经启动了很多task,没有资源可以继续启动新task。此时,应该选择等待一段时间。
- 如果等待时间内,有task完成处理释放了资源,那么executor为新task分配资源,此时保持PROCESS_LOCAL。
- 如果超出等待时间,所有task都还没完成,新task未获取到资源,此时需要降级为NODE_LOCAL,由Node分配资源来运行新task。
Spark为task资源等待时间提供了配置参数:
- spark.locality.wait
是spark切换每个级别的等待间隔时间,默认值3秒过短,生产上目前配置在50~60秒。
也可以细化到每个级别的等待间隔时间配置:
- spark.locality.process
- spark.locality.node
- spark.locality.rack
建议越在前面的配置略大些好,例如50~60秒。
【Spark调优】数据本地化与参数调优的更多相关文章
- 【Spark篇】---Spark中内存管理和Shuffle参数调优
一.前述 Spark内存管理 Spark执行应用程序时,Spark集群会启动Driver和Executor两种JVM进程,Driver负责创建SparkContext上下文,提交任务,task的分发等 ...
- 【深度学习篇】--神经网络中的调优一,超参数调优和Early_Stopping
一.前述 调优对于模型训练速度,准确率方面至关重要,所以本文对神经网络中的调优做一个总结. 二.神经网络超参数调优 1.适当调整隐藏层数对于许多问题,你可以开始只用一个隐藏层,就可以获得不错的结果,比 ...
- hive 调优(二)参数调优汇总
在hive调优(一) 中说了一些常见的调优,但是觉得参数涉及不多,补充如下 1.设置合理solt数 mapred.tasktracker.map.tasks.maximum 每个tasktracker ...
- 【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优
一.前述 Spark中调优大致分为以下几种 ,代码调优,数据本地化,内存调优,SparkShuffle调优,调节Executor的堆外内存. 二.具体 1.代码调优 1.避免创建重复的RDD,尽 ...
- Spark数据本地化-->如何达到性能调优的目的
Spark数据本地化-->如何达到性能调优的目的 1.Spark数据的本地化:移动计算,而不是移动数据 2.Spark中的数据本地化级别: TaskSetManager 的 Locality L ...
- Spark调优(二) 数据本地化
Application任务执行流程: 在Spark Application提交后,Driver会根据action算子划分成一个个的job,然后对每一 个job划分成一个个的stage,stage内部 ...
- Spark性能调优篇六之调节数据本地化等待时长
数据本地化等待时长调节的优化 在项目该如何使用? 通过 spark.locality.wait 参数进行设置,默认为3s,6s,10s. 项目中代码展示: new SparkConf().set(&q ...
- Spark Shuffle原理、Shuffle操作问题解决和参数调优
摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuff ...
- spark参数调优
摘要 1.num-executors 2.executor-memory 3.executor-cores 4.driver-memory 5.spark.default.parallelism 6. ...
随机推荐
- 应用脚手架创建一个React项目
安装脚手架,这里会自动安装到你的nodejs里面 npm install create-react-app -g 进入创建目录 我这里创建一个为 react03的项目,等待下载..... create ...
- html背景图星际导航图练习
html <body> <div class="box1"> <div></div> ...
- Java JDK 在Windows 10中配置环境变量
首先,去Oracle官方网站下载Java JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...
- java学习笔记(七):for循环
java的for循环和c++的for循环类似 public class Test { public static void main(String args[]) { for(int x = 10; ...
- Java12-java语法基础(十一)继承
Java12-java语法基础(十一)继承 一.继承 学习要求: 1. 理解继承的概念与作用 2. 掌握继承的实现机制 3.理解继承中的覆写与覆盖 4.掌握super关键字的使用 回顾: 1.对客观世 ...
- Java 深拷贝,浅拷贝
一直听说这两个词,确实不知道代表啥意思?也不知道究竟要用来做什么?什么时候用到他们. 下面是从一篇博文种得到的解释: 浅复制(浅克隆) :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他 ...
- PHP 实现单链表
数据结构是计算机存储.组织数据的方式,结构不同那么数据的检索方式和效率都不一样, 常用的数据结构有 数组 .栈 .队列 .链表 .树.堆 今天讲下单链表,单链表是一种链式存取的数据结构, 跟顺序链表 ...
- jenkins shell部署
jenkins执行shell脚本 jenkins执行shell 上一篇说的是jenkins+svn+maven把war包自动部署到Tomcat,这篇是从SVN上拉取代码maven生成jar文件,并且拷 ...
- asp.net core2.0中网站发布的时候,怎么样才配置才可以使视图文件不被打包进去?
默认设置可真是坑~~ https://q.cnblogs.com/q/99680/
- 【APP测试(Android)】--升级更新