摘要: 1 内存调整要点 Memory Tuning,Java对象会占用原始数据2~5倍甚至更多的空间。最好的检测对象内存消耗的办法就是创建RDD,然后放到cache里面去,然后在UI上面看storage的变化。使用-XX:+UseCompressedOops选项可以压缩指针(8字节变成4字节)。在调用co 阅读全文
posted @ 2020-11-19 11:26 宁君 阅读(492) 评论(0) 推荐(1) 编辑
摘要: 1 Spark Web UI Spark提供了一些基本的Web监控页面,对于日常监控十分有用。 通过http://master:4040(默认端口是4040,可以通过spark.ui.port修改)我们可以获得运行中的程序信息:(1)stages和tasks调度情况;(2)RDD大小及内存使用;(3 阅读全文
posted @ 2020-11-19 11:21 宁君 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 1基本概念和原则 每一台host上面可以并行N个worker,每一个worker下面可以并行M个executor,task们会被分配到executor上面去执行。Stage指的是一组并行运行的task,stage内部是不能出现shuffle的,因为shuffle的就像篱笆一样阻止了并行task的运行 阅读全文
posted @ 2020-11-19 11:19 宁君 阅读(185) 评论(0) 推荐(0) 编辑
摘要: Spark性能优化指南——高级篇 Spark性能优化指南——基础篇 阅读全文
posted @ 2020-11-19 11:14 宁君 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 1.使用mapPartitions算子提高性能 mapPartition的优点:使用普通的map操作,假设一个partition中有1万条数据,那么function就要被执行1万次,但是使用mapPartitions操作之后,function仅仅会被执行一次,显然性能得到了很大的提升,这个就没必要在 阅读全文
posted @ 2020-11-19 11:13 宁君 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 1 task的内存缓冲调节参数 2 reduce端聚合内存占比 spark.shuffle.file.buffer map task的内存缓冲调节参数,默认是32kb spark.shuffle.memoryFraction reduce端聚合内存占比,默认0.2 怎么判断在什么时候对这两个参数进行 阅读全文
posted @ 2020-11-19 11:08 宁君 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 降低cache操作的内存占比 方案: 通过SparkConf.set("spark.storage.memoryFraction","0.6")来设定。默认是0.6,可以设置为0.5 0.3 等 原因: spark中,堆内存又被划分成了两块儿,一块儿是专门用来给RDD的cache、persist操作 阅读全文
posted @ 2020-11-19 11:07 宁君 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 数据本地化等待时长调节的优化 在项目该如何使用? 通过 spark.locality.wait 参数进行设置,默认为3s,6s,10s。 项目中代码展示: new SparkConf().set("spark.locality.wait","10"); 作者:z小赵 链接:https://www.j 阅读全文
posted @ 2020-11-19 11:05 宁君 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 广播大变量,重复用到的变量 原因见 https://www.jianshu.com/p/2c297b23ebda 阅读全文
posted @ 2020-11-19 11:04 宁君 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 如果一个RDD在两个地方用到,就持久化他.不然第二次用到他时,会再次计算. 直接调用cache()或者presist()方法对指定的RDD进行缓存(持久化)操作,同时在方法中指定缓存的策略。 原文:https://www.jianshu.com/p/9555644ccc0f 阅读全文
posted @ 2020-11-19 11:03 宁君 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 问题一:有哪些资源可以分配给spark作业使用? 答案:executor个数,cpu per exector(每个executor可使用的CPU个数),memory per exector(每个executor可使用的内存),driver memory 问题二:在什么地方分配资源给spark作业? 阅读全文
posted @ 2020-11-19 11:02 宁君 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 作者:十一喵先森 链接:https://juejin.im/post/5e1c41c6f265da3e152d1e62 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 对上文的总结. Shuffle 的核心要点 什么是shuffle? 需要统筹全局的算子,sort就 阅读全文
posted @ 2020-11-19 11:00 宁君 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 作者:十一喵先森 链接:https://juejin.im/post/5e1c414fe51d451cad4111d1 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 对上文的总结 Spark 任务调度概述 一个Spark应用程序包括Job、Stage以及Task三 阅读全文
posted @ 2020-11-19 10:59 宁君 阅读(152) 评论(0) 推荐(0) 编辑
摘要: Spark 集群会启动 Driver 和 Executor 两种 JVM 进程 我们只关注Executor的内存. 分为堆内内存和堆外内存 内存分为 存储内存 : 存储数据用的. 执行内存: 执行shuffle时占用的. 其他内存: 用户自定义的对象. 堆内内存 这是由jvm管理.spark自己不知 阅读全文
posted @ 2020-11-19 10:57 宁君 阅读(86) 评论(0) 推荐(0) 编辑
摘要: Master URL Meaning local 在本地运行,只有一个工作进程,无并行计算能力。 local[K] 在本地运行,有K个工作进程,通常设置K为机器的CPU核心数量。 local[*] 在本地运行,工作进程数量等于机器的CPU核心数量。 spark://HOST:PORT 以Standa 阅读全文
posted @ 2020-11-19 10:56 宁君 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 提升Spark运行 spark.sql.adaptive.enabled=true spark的自适应执行,启动Adaptive Execution spark.dynamicAllocation.enabled=true 开启动态资源分配,Spark可以根据当前作业的负载动态申请和释放资源 spa 阅读全文
posted @ 2020-11-19 10:51 宁君 阅读(1938) 评论(0) 推荐(1) 编辑
摘要: 1 Spark开发调优篇 原则一:避免创建重复的RDD 原则二:尽可能复用同一个RDD 原则三:对多次使用的RDD进行持久化 原则四:尽量避免使用shuffle类算子 因此在我们的开发过程中,能避免则尽可能避免使用reduceByKey、join、distinct、repartition等会进行sh 阅读全文
posted @ 2020-11-19 10:50 宁君 阅读(295) 评论(0) 推荐(1) 编辑