Spark性能调优实战 / 一站式加速Spark作业执行性能

吴磊
FreeWheel机器学习团队负责人
  • 课程目录
  • 课程介绍
  • 开篇词 | Spark性能调优,你该掌握这些“套路”

    你知道Spark 3.0有哪些新特性吗?为什么自己学了那么多的调优方法,应用的执行性能还是上不去?

  • 01 | 性能调优的必要性:Spark本身就很快,为啥还需要我调优?

    很多开发者都认为Spark的执行性能已经非常强了,实际工作中只要按部就班地实现业务功能就可以了,没有必要进行性能调优。

  • 02 | 性能调优的本质:调优的手段五花八门,该从哪里入手?

    面对成百上千行应用代码、近百个Spark配置项,我们该从哪里入手调优呢?今天,我就从性能调优的本质入手,带你找到方向。

  • 03 | RDD:为什么你必须要理解弹性分布式数据集?

    目前,我们基本都使用DataFrame或Dataset API了,你还会使用RDD API吗?你觉得有必要理解RDD吗?

  • 04 | DAG与流水线:到底啥叫“内存计算”?

    我们都知道,Spark是内存计算的,但是,为什么把数据缓存到内存里去,性能反而更差了?今天,我就带你一起来解决这个问题。

  • 05 | 调度系统:“数据不动代码动”到底是什么意思?

    你知道为什么parallelism数值过大调度开销会呈指数级增长吗?parallelism怎么设置才能最高效?

  • 06 | 存储系统:空间换时间,还是时间换空间?

    在日常的开发工作中,除了业务逻辑实现,我们真的需要去关心像存储系统、调度系统这样底层的东西吗?这节课,我来告诉你答案。

  • 07 | 内存管理基础:Spark如何高效利用有限的内存空间?

    你知道Spark是如何使用内存的吗?不同的内存区域之间的关系是什么,它们又是如何划分的?今天,我就来和你深入探讨一下。

  • 08 | 应用开发三原则:如何拓展自己的开发边界?

    今天,我会从应用开发的角度入手,带你探讨开发阶段应该遵循的三大基础原则,让你在能尽可能地避开很多“坑”。

  • 09 | 调优一筹莫展,配置项速查手册让你事半功倍!(上)

    今天,我带你汇总和硬件资源有关的配置项,为资源平衡打下基础。

  • 10 |调优一筹莫展,配置项速查手册让你事半功倍!(下)

    今天,我继续带你汇总Shuffle类和Spark SQL大类的配置项,说说它们的含义和作用,以及它们能解决的问题。

  • 11 | 为什么说Shuffle是一时无两的性能杀手?

    一提到Shuffle,你能想到什么?为什么我们一谈Shuffle就色变,提到它就避之唯恐不及呢?今天,我们就来探讨一下。

  • 12 | 广播变量(一):克制Shuffle,如何一招制胜!

    “能省则省、能拖则拖”原则中,拖指的是把应用中会引入Shuffle的操作尽可能地往后面去拖,那省又是什么呢?

  • 13 | 广播变量(二):如何让Spark SQL选择Broadcast Joins?

    在遇到Shuffle的时候,你是否也只会使用默认的广播变量?今天,我们学习优先选择Broadcast Joins的方法。

  • 14 | CPU视角:如何高效地利用CPU?

    较低的CPU利用率不仅浪费宝贵的硬件资源,也让应用端到端的执行性能无法让人满意。那么,你知道怎么高效地利用CPU吗?

  • 15 | 内存视角(一):如何最大化内存的使用效率?

    想要提升CPU利用率,最重要的是合理分配执行内存。想要合理分配执行内存,我们必须学会合理划分Spark所有的内存区域。

  • 16 | 内存视角(二):如何有效避免Cache滥用?

    有效利用Cache往往能大幅提升执行性能,但更多人却在滥用Cache。今天,我就带你学习怎么有效利用Cache。

  • 17 | 内存视角(三):OOM都是谁的锅?怎么破?

    OOM会导致作业执行中断,并且它的出现常常让人找不到头绪。今天,我就带你一起解决OOM问题。

  • 18 | 磁盘视角:如果内存无限大,磁盘还有用武之地吗?

    如果内存无限大,会引入的大量Full GC停顿让应用的执行性能比有磁盘操作的时候更差。今天,我就带你探讨磁盘的功能。

  • 19 | 网络视角:如何有效降低网络开销?

    在平衡不同硬件资源的时候,相比CPU、内存、磁盘,网络开销无疑是最拖后腿的那一个。那么,有哪些方法可以降低网络开销呢?

  • 20 | RDD和DataFrame:既生瑜,何生亮?

    为什么有了RDD,我们还用要DataFrame?DataFrame相比RDD到底有哪些优势?

  • 21 | Catalyst逻辑计划:你的SQL语句是怎么被优化的?(上)

    今天,我带你探讨Catalyst优化器逻辑优化阶段的工作原理。

  • 22 | Catalyst物理计划:你的SQL语句是怎么被优化的(下)?

    相比Catalyst中的逻辑计划,物理计划更具体,它明确交代了Spark SQL每一步具体该怎么执行,我们一起来学习它。

  • 23 | 钨丝计划:Tungsten给开发者带来了哪些福报?

    今天这一讲,我们就来说说Tungsten的设计初衷是什么,它到底解决了哪些问题,以及它给开发者到底带来了哪些性能红利。

  • 24 | Spark 3.0(一):AQE的3个特性怎么才能用好?

    为什么AQE的开关打开了,相关的配置项也设了,可应用性能总是没有提升呢?这一讲,我就带你详细说说怎么用好AQE。

  • 25 | Spark 3.0(二):DPP特性该怎么用?

    今天这一讲,我通过一个电商场景下的例子带你学习分区剪裁、动态分区剪裁的概念、作用、用法和注意事项,让你一次就学会!

  • 26 | Join Hints指南:不同场景下,如何选择Join策略?

    深入理解单机环境中3种Join实现方式的原理,能够帮助我们有效提高数据关联场景下Spark的执行性能。

  • 27 | 大表Join小表:广播变量容不下小表怎么办?

    大表Join小表时应该优先考虑BHJ,因为它的执行效率最高。那要是小表的数据量超过广播阈值,我们又该怎么办呢?

  • 28 | 大表Join大表(一):什么是“分而治之”的调优思路?

    “大表Join大表”场景下的性能问题有两种调优思路:“分而治之”和“负隅顽抗”。今天,我带你一起学习“分而治之”的思路。

  • 29 | 大表Join大表(二):什么是负隅顽抗的调优思路?

    “大表Join大表”场景下的性能问题有两种调优思路:“分而治之”和“负隅顽抗”。今天,我带你一起学习“负隅顽抗”的思路。

  • 30| 应用开发:北京市小客车(汽油车)摇号趋势分析

    为什么北京小客车摇号这么难?一个人平均需要参与多少次摇号才会中签?摇的次数越多,中签率就越高吗?

  • 31 | 性能调优:手把手带你提升应用的执行性能

    今天,我带你结合专栏中学过的调优知识和技巧,一起把它们实践到上一讲的5个案例中。

  • 期末考试 | “Spark性能调优”100分试卷等你来挑战!

    一套习题,测试你对深度学习推荐系统知识的掌握程度。

  • 结束语 | 在时间面前,做一个笃定学习的人

    学习的本质是一个不断做熵减的过程。要对熵减做加速,我给你准备了三个“锦囊”:生产者思维、235原则和生活化联想。

【限时优惠 | 立省 ¥30】

限时优惠+口令「Happy2021」 立省 ¥30,到手 ¥69,仅限今日。

订阅后,戳此加入「吴磊的 Spark 的读者群」

你将获得

  • 深入浅出的 Spark 核心原理
  • 全面解析 Spark SQL 性能调优
  • 应用开发、配置项设置实操指南
  • 手把手带你实现一个分布式应用

讲师介绍

吴磊,现任 Comcast Freewheel 机器学习团队负责人,负责计算广告业务中机器学习应用的实践、落地与推广。曾任职于 IBM、联想研究院、新浪微博,具备丰富的数据库、数据仓库、大数据开发与调优经验。

吴磊热爱技术分享,擅长从生活的视角解读技术。做过Spark Summit China 2017 讲师、World AI Conference 2020 讲师,在《IBM developerWorks》和《程序员》杂志,以及InfoQ上发表过多篇技术文章,深受好评。

课程介绍

目前,Spark已然成为分布式数据处理技术的事实标准,也在逐渐成为各大头部互联网公司的标配。对于数据领域的任何一名工程师来说,Spark开发都是一项必备技能;而想要进入大厂,就更得有丰富的Spark性能调优经验。

可现实情况是,我们想要快速上手开发应用很容易,把握应用的执行性能却总也找不到头绪,比如:

  • 明明都是内存计算,为什么我用了RDD/DataFrame Cache,性能反而更差了?
  • 网上吹得神乎其神的调优手段,为啥到了我这就不好使呢?
  • 并行度设置得也不低,为啥我的CPU利用率还是上不去?
  • 节点内存几乎全都划给Spark用了,为啥我的应用还是OOM?

为此,我们特意邀请到了吴磊老师,他根据自己多年的数据处理经验,梳理出了一套关于性能调优的方法论,帮助你在有效加速 Spark 作业执行性能的同时,也建立起以性能为导向的开发习惯

除此之外,他还会手把手教你打造一个分布式应用,带你从不同角度洞察汽油车摇号的趋势和走向,让你对性能调优技巧和思路的把控有一个“质的飞跃”。


课程模块设计

课程按照原理、性能、实战分为三大部分。

原理篇:主要讲解与性能调优息息相关的核心概念,包括RDD、DAG、调度系统、存储系统和内存管理。力求用最贴切的故事和类比、最少的篇幅,让你在最短的时间内掌握其核心原理,为后续的性能调优打下坚实的基础。

性能篇:虽然Spark的应用场景可以分为5大类,包括海量批处理、实时流计算、图计算、数据分析和机器学习。但它对Spark SQL的倾斜和倚重也是有目共睹,所以性能篇主要分两部分来讲。

一部分主要讲解性能调优的通用技巧,包括应用开发的基本原则、配置项的设置、Shuffle的优化、资源利用率的提升。另一部分会专注于数据分析领域,借助Spark内置优化如Tungsten、AQE和典型场景如数据关联,总结Spark SQL中的调优方法和技巧。

实战篇:以2011-2019的《北京市汽油车摇号》数据为例,手把手教你打造一个分布式应用,带你从不同角度洞察汽油车摇号的趋势和走向,帮助你实践我们的方法论和调优技巧,不仅要学得快,也要学得好!

除此之外,课程更新期间,还会不定期地针对一些热点话题进行加餐。比如,和Flink、Presto相比,Spark有哪些优势;再比如,Spark的一些新特性,以及业界对于Spark的新探索。这也能帮助你更好地面对变化,把握先机。

课程目录

特别放送