Spark 性能调优实战
一站式加速 Spark 作业执行性能
吴磊  前 FreeWheel 机器学习团队负责人
专栏
已完结·共 36 讲
|
8725 人已学
|
收藏
子兮
老师,看了你的课,受益匪浅,每篇文章下的评论都很有价值,值得反复琢磨,期待老师有更多代码优化案例,如果有机会看到老师出源码讲解学习的课程就更好了
作者回复:后面的课程还会有更多的代码案例,希望对老弟有所帮助~ 关于源码的讲解,看吧,等以后有机会,可以讲讲源码,现在杂务缠身,抽不出身来,哎
2021-10-28
对方正在输入。。。
老师的课,我是越看越爽,看完就有一种“老子天下无敌了”的感觉,哈哈哈哈哈
作者回复:哈哈哈,喜欢就好~ 兄弟五一节快乐~
2021-05-01
淡C
作为一个准大四的学生,一开始学习了spark基础之后,很荣幸遇到磊哥的两个spark专栏,这两个专栏让我对spark的理解有了全新的理解,起码让我在实习的时候可以正式员工battle,值得二刷,spark调优甚至值得三刷,争取二刷之后我也可以称自己为spark初学者了。
2022-07-15
淡C
看完零基础入门Spark来的,老师零基础入门Spark+Spark性能调优感觉可以让我在简历上写熟悉Spark了,干货很多
2022-06-09
赌神很低调
老师好,有几个问题不是很明白想问下: 1、spark中内存划分是逻辑上的,真正的管理还是在jvm。如user memory占用内存超过设定值,还是会占用框架内存。但框架内存会根据设定值让task做一些阻塞或spill操作,所以从这个层面上说,框架内存的值得正确设置,如用户不会用到大的list、map等内存集合,就要把用户内存空间设置得够小,以保证框架内存(执行内存+存储内存)足够大,避免不必要的阻塞或spill操作? 2、如果开启了堆外内存,即使堆外内存不够,堆内内存充足,task也只会用堆外内存而不会用堆内内存? 3、spark 2.x版本中如果开启了堆外内存,并设置了spark.memory.offHeap.size=500mb,在yarn上跑的话spark.executor.memoryOverhead除了默认需要的10%是否还有要加上这500mb,否则container不会分配堆外这500mb的内存?看网上说3.0以上就不用加了。 4、task会在哪些场景申请和释放内存呢?只是shuffle的场景吗?transformer场景会吗?
编辑回复:1、spark中内存划分是逻辑上的,真正的管理还是在jvm。如user memory占用内存超过设定值,还是会占用框架内存。但框架内存会根据设定值让task做一些阻塞或spill操作,所以从这个层面上说,框架内存的值得正确设置,如用户不会用到大的list、map等内存集合,就要把用户内存空间设置得够小,以保证框架内存(执行内存+存储内存)足够大,避免不必要的阻塞或spill操作? 回答:是的,Spark的内存管理,更多的是一种”审计“上的管理,底下有JVM,Spark就不可能直接管理内存。通过内存管理机制,Spark更多地是设置一些软限制,从而从应用层面来将内存划分为不同区域,这些区域,在JVM看来,是没有区别的。如你所说:”如用户不会用到大的list、map等内存集合,就要把用户内存空间设置得够小,以保证框架内存(执行内存+存储内存)足够大,避免不必要的阻塞或spill操作“,确实是这样的。 2、如果开启了堆外内存,即使堆外内存不够,堆内内存充足,task也只会用堆外内存而不会用堆内内存? 回答:内存是用堆外,还是堆内,是以Job为粒度的,也就是说,要设置堆外内存,我们得确保堆外大小足以应对当前的作业,作业里面所有的tasks,都只能用堆外(如果作业在内存设置上用了堆外)。那么显然,此时跑在堆外的Job,假设内存不够用了,即便堆内还有剩余,也不会给这个Job用,这个Job还是会抛OOM。 3、spark 2.x版本中如果开启了堆外内存,并设置了spark.memory.offHeap.size=500mb,在yarn上跑的话spark.executor.memoryOverhead除了默认需要的10%是否还有要加上这500mb,否则container不会分配堆外这500mb的内存?看网上说3.0以上就不用加了。 回答:对的,堆外就是JVM heap以外的内存,以前的话,yarn把这部分内存算在container里面,现在不算在container里面了,不过这样其实有风险,因为堆外内存大小,对于yarn来说透明了,如果在运行时,Spark Job跑着跑着,发现OS根本分配不了500mb,那这个事情yarn是不负责的。 4、task会在哪些场景申请和释放内存呢?只是shuffle的场景吗?transformer场景会吗? 回答:凡是利用到AppendOnlyMap,PartitionPairBuffer这两个数据结构的计算,都要申请、释放内存,跟算子没啥关系哈,主要是shuffle write阶段的计算。
2022-03-29
确实写的蛮好的,很用心,并且很多问题都和大家有互动,我一个平时不喜欢看书的人都觉得蛮有意思的,哈哈哈, 吴老师,强列推荐你在写篇flink的,如果不会,你就去学!!!
作者回复:哈哈,感谢老弟认可~ Flink懂一些,不过确实不像Spark那么熟悉,而且公司这边事情积压成山,实在没精力再写啦。不过感谢老弟的鼓励,等忙完这一阵子,以后找机会再写吧~
2021-12-22
tiankonghewo
第二个例子,学习了
2021-11-21
CycleGAN
极客时间买了几十门课,这是我第一门完全听完的。。这门课在我的的这么多课里我觉得是top3的。。老师深入浅出的能力很强,大赞。我期待的课程是《spark源码分析》!!,感觉现在市场上没有见过特别好的。 关于spark我有个问题请教,在spark中遇到长尾task执行不完的该怎么kill掉重启呢,比如节点故障,让他在其他执行器重启,我看spark好像没有超时重试机制,是出于什么原因呢。有什么办法发现与重试呢,总不能爬spark ui去感知吧。。感谢老师!
作者回复:感谢老弟的认可与陪伴!恭喜老弟完成课程~ 💯 长尾task的话,一定意味着有倾斜,解决类似的问题,几个思路吧: 1)开启Speculative推断,Spark会自动启动单独的task,来执行同样的任务。这个就是你说的超时重试机制,Spark会推断,哪些tasks属于长尾任务,然后会自动在其他Executors去launch task,计算同样的数据分片,也就是说,在长尾task失败之前,就开始“重试”了 2)AQE自动倾斜,消除倾斜 3)手工加盐,消除倾斜 希望对老弟有所帮助~ 再次感谢!
2021-10-23
钝感
刚开始听的时候:“什么土豆工坊?什么土豆片,什么形态,什么流水线,什么加工方法?”这都是啥啊。。再往后听,我的天!!这形容比喻也太贴切了吧!!👍,虽然已是深夜,但还是从床上起了起来,边吃薯片边听,我要听一宿,我要学习!!!🙈
作者回复:哈哈,一起加油~
2021-10-11
猿鸽君
老师您好,首先真的很感谢您开了这门课,对我来说获益匪浅。 先自我介绍下个人情况,我是一名刚工作一年的小白,最初选择的是大数据平台研发的岗位,结果分配到了别的部门,现在每天的工作大多都是用spark做etl,所以老师的调优课对我的工作有很大帮助。但随之而来的就是自己对以后发展的迷茫,因为部门没有大数据方向的资深人员,自己的导师是后端开发,也是爱莫能助。所以想借此机会,有几个问题想请教下老师: 1.大数据这个领域有什么发展的方向?现在我知道的一个就是AI,一个就是做平台开发,对组件魔改。 2.现在涉及大数据的技术繁多,像docker,k8s,flink。没工作前以为这些会用到,自学过,结果现在工作了一年也没用到,都忘的差不多,感觉自己在做很多无用功。如何能够系统地规划自己的学习路线,而不是这样盲目的学习呢? 3.老师能够否分享一下自己的学习经历,和在大数据方向上的一些选择和取舍。 最后,再次感谢老师开了这门课。
作者回复:老弟的困惑和迷茫我感同身受,首先我想说,才工作一年,就开始有这样的疑问和困惑,其实你已经打败90%的同龄人了。这个不是安慰你,据我的观察,很少有初入职场就开始考虑职业发展的同学。我自己其实就是个例子,我其实在工作满3年的时候,才忽然意识到,我应该考虑职业发展这回事。所以首先恭喜老弟,你已经想到别人前面去了。 言归正传,咱们聊聊职业发展这回事。首先,我觉得,你需要明确,你的兴趣点,在什么地方。至少有两个方向,供你选择,第一:研究型,第二:应用型。啥叫研究型呢?就比如你做大数据二次研发,这就是研究型,就是把一个工具或者算法做到极值,把技术本身,做到极值。第二个是应用型,意思是,技术就是个工具,学好技术是为了解决业务问题,是为了落地业务应用,所以叫它“应用型”。 明确了兴趣点之后,其实大方向上就清晰了。先不用管这两个方向未来的薪资潜力,两个方向其实在薪资方面,都不弱,都有各自的用武之地。所以,说到底,还是要看你个人的兴趣,到底是哪个方向会让你觉得更有意思,做起来更有激情。这两个方向(当然,或许还有更多的别的方向),没有优劣之分,没有对错之分,纯粹是看你更喜欢哪一个,没有好坏。 OK,大的基调定下来之后。我们再说大数据这个领域的发展。一个,就是刚刚说的研究型,你可以做spark二次开发,为spark社区做贡献,或者是其它任意的大数据产品。另外一个,就是从大数据的几大应用场景着手,做应用开发,比如数仓是个方向、流处理是个方向、图计算是个方向、机器学习,更是个方向。同样,每个方向做好了,都有前景和钱景,并无优劣之分。这些应用场景,还是要看哪个你更有兴趣,更喜欢。其实,每个应用方向,又有“研究型”和“应用型”之分,这个跟刚刚说的,其实是一样的。 第二个问题是“学了就忘”,其实这个大家都一样,纯学理论知识,没有机会应用的话,确实很难记得住,这个不用懊恼,大家都一样的。所以还是要结合工作需要,有的放矢,用“学习、运用、输出”的迭代式学习法,来夯实已有的知识体系。光学不用的话,确实很难。 第三个问题是我自己的经历,我的经历其实挺简单的,就是数据库 -> 数仓 -> 数据分析 -> 机器学习,我是属于“应用型”的,我对技术的应用比较感兴趣,我比较懒,不喜欢做研究,所以选择了这个路线。另外我对数据分析,数据当中蕴含的价值,很感兴趣,这也是为什么会沿着数据分析这条路,慢慢地会入了机器学习的坑,目的就是想挖掘数据中的规律,来指导决策。当然,转行机器学习,也有一些功利心,毕竟机器学习比较火爆,应用场景多,对于个人的职业发展来说,选择的面会更大一些。 大概其就是这些思路,头上一句、腚上一句,不成体系,希望对老弟有所帮助~
2021-09-03
讲师

吴磊

前 FreeWheel 机器学习团队负责人

吴磊,前 Comcast Freewheel 机器学习团队负责人,负责计算广告业务中机器学习应用的实践、落地与推广。曾任职于 IBM、联想研究院、新浪微博,具备丰富的数据库、数据仓库、大数据开发与调优经验。 吴磊热爱技术分享,擅长从生活的视角解读技术。做过 Spark Su...查看更多
编辑推荐
讲师的其他课程
零基础入门 Spark
吴磊
前 FreeWheel 机器学习研发经理

38讲 | 19024 人已学习

¥59¥129
包含这门课的学习路径

机器学习工程师

13门课程 37.4w人学习
看过的人还看了
数据结构与算法之美
王争
前 Google 工程师

81讲 | 282589 人已学习

¥68¥199
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 223783 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 179866 人已学习

¥98¥399
设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者

113讲 | 122761 人已学习

¥98¥299
Redis 核心技术与实战
蒋德钧
中科院计算所副研究员

53讲 | 81059 人已学习

¥68¥199
Kafka 核心技术与实战
胡夕
Apache Kafka Committer,老虎证券技术总监

47讲 | 52588 人已学习

¥68¥199