从0开始学大数据
李智慧
同程艺龙交通首席架构师,前Intel大数据架构师,《大型网站技术架构》作者
立即订阅
14333 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么说每个软件工程师都应该懂大数据技术?
免费
预习模块 (3讲)
预习 01 | 大数据技术发展史:大数据的前世今生
预习 02 | 大数据应用发展史:从搜索引擎到人工智能
预习 03 | 大数据应用领域:数据驱动一切
模块一 Hadoop大数据原理与架构 (7讲)
04 | 移动计算比移动数据更划算
05 | 从RAID看垂直伸缩到水平伸缩的演化
06 | 新技术层出不穷,HDFS依然是存储的王者
07 | 为什么说MapReduce既是编程模型又是计算框架?
08 | MapReduce如何让数据完成一次旅行?
09 | 为什么我们管Yarn叫作资源调度框架?
10 | 模块答疑:我们能从Hadoop学到什么?
模块二 大数据生态体系主要产品原理与架构 (7讲)
11 | Hive是如何让MapReduce实现SQL操作的?
12 | 我们并没有觉得MapReduce速度慢,直到Spark出现
13 | 同样的本质,为何Spark可以更高效?
14 | BigTable的开源实现:HBase
15 | 流式计算的代表:Storm、Flink、Spark Streaming
16 | ZooKeeper是如何保证数据一致性的?
17 | 模块答疑:这么多技术,到底都能用在什么场景里?
模块三 大数据开发实践 (8讲)
18 | 如何自己开发一个大数据SQL引擎?
19 | Spark的性能优化案例分析(上)
20 | Spark的性能优化案例分析(下)
21 | 从阿里内部产品看海量数据处理系统的设计(上):Doris的立项
22 | 从阿里内部产品看海量数据处理系统的设计(下):架构与创新
23 | 大数据基准测试可以带来什么好处?
24 | 从大数据性能测试工具Dew看如何快速开发大数据系统
25 | 模块答疑:我能从大厂的大数据开发实践中学到什么?
模块四 大数据平台与系统集成 (6讲)
26 | 互联网产品 + 大数据产品 = 大数据平台
27 | 大数据从哪里来?
28 | 知名大厂如何搭建大数据平台?
29 | 盘点可供中小企业参考的商业大数据平台
30 | 当大数据遇上物联网
31 | 模块答疑:为什么大数据平台至关重要?
模块五 大数据分析与运营 (5讲)
32 | 互联网运营数据指标与可视化监控
33 | 一个电商网站订单下降的数据分析案例
34 | A/B测试与灰度发布必知必会
35 | 如何利用大数据成为“增长黑客”?
36 | 模块答疑:为什么说数据驱动运营?
模块六 大数据算法 (6讲)
37 | 如何对数据进行分类和预测?
38 | 如何发掘数据之间的关系?
39 | 如何预测用户的喜好?
40 | 机器学习的数学原理是什么?
41 | 从感知机到神经网络算法
42 | 模块答疑:软件工程师如何进入人工智能领域?
智慧写给你的寄语 (1讲)
所有的不确定都是机会——智慧写给你的新年寄语
结束语 (2讲)
结束语 | 未来的你,有无限可能
第2季回归丨大数据之后,让我们回归后端
从0开始学大数据
登录|注册

20 | Spark的性能优化案例分析(下)

李智慧 2018-12-13
上一期,我讲了软件性能优化必须经过进行性能测试,并在了解软件架构和技术的基础上进行。今天,我们通过几个 Spark 性能优化的案例,看一看所讲的性能优化原则如何落地。如果你忘记了性能优化的原则,可以返回上一期复习一下。
基于软件性能优化原则和 Spark 的特点,Spark 性能优化可以分解为下面几步。
1. 性能测试,观察 Spark 性能特性和资源(CPU、Memory、Disk、Net)利用情况。
2. 分析、寻找资源瓶颈。
3. 分析系统架构、代码,发现资源利用关键所在,思考优化策略。
4. 代码、架构、基础设施调优,优化、平衡资源利用。
5. 性能测试,观察系统性能特性,是否达到优化目的,以及寻找下一个瓶颈点。
下面我们一起进入详细的案例分析,希望通过这几个案例,可以帮助你更好地理解 Spark 的原理,以及性能优化如何实践落地,希望能对你有所启发。

案例 1:Spark 任务文件初始化调优

首先进行性能测试,发现这个视频图谱 N 度级联关系应用分为 5 个 job,最后一个 job 为保存结果到 HDFS,其余 job 为同样计算过程的反复迭代。但是发现第一个 job 比其他 job 又多了个计算阶段 stage,如图中红圈所示。
通过阅读程序代码,发现第一个 job 需要初始化一个空数组,从而产生了一个 stage,但是这个 stage 在性能测试结果上显示,花费了 14 秒的时间,远远超出合理的预期范围。同时,发现这段时间网络通信也有一定开销,事实上只是内存数据初始化,代码上看不出需要进行网络通信的地方。下图是其中一台计算节点的通信开销,发现在第一个 stage,写通信操作几乎没有,读通信操作大约每秒几十 MB 的传输速率。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学大数据》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(13)

  • sunlight001
    在公司里没有接触大数据的机会,要想深入学习的话,需要怎么办呢,现在不管是看书,看demo,等总是感觉不深入,有什么好的办法吗
    2018-12-13
    15
  • bill
    老师,文中的图是用什么软件得出的?

    作者回复: 自己开发,后面会讲到。

    2018-12-13
    4
  • 吴科🍀
    我们公司集群作业最多的就是SQL作业约占80%,不管是hive SQL还是spark SQL,presto的SQL引擎都不是完美的,执行任务都有可能卡住99%就不动了。优化业务逻辑,SQL的写法是关键,减少重复计算,共用中间结果,还要有分区表的感念。

    作者回复: 👍🏻

    2018-12-13
    1
    3
  • 暴风雪
    1.第一个案例的代码,关于文件锁的范围,我有强迫症,就是把锁的范围再缩小一点,仅仅锁住判断下载的那段代码就好啦。
    2.关于案例5,我有点看不懂网络使用率的图,为什么是50多秒的延迟,能不能用红圈圈一下。
    2018-12-14
    2
  • 杰之7
    通过这节的阅读学习,通过第一个大数据实战产品,了解了性能调优的一般流程,通过性能测试,分析资源瓶颈,分析系统架构及代码,通过架构,代码及基础设施来进行调优,最后在进行测试。

    老师通过5个方面进行的分析说明,1,Spark任务文件初始化调优,2,Spark任务调度优化,3,Spark应用配置优化,4,操作系统优化,5,硬件优化。通过这些维度的分析,我进一步的知道,做大数据开发,一样需要有好的计算机基本功,这是每一个技术人员的底层能力。

    所以大数据开发中都会涉及到硬件,系统,大数据产品及其配置,应用程序开发和部署等实际经验,学习到这里,我需要真正做一判断,是真正决定走技术路,在接下来至少10年的时间去做技术呢?还是为了仅仅熟悉大数据方面的知识,适可而止呢?

    我作为一名平凡而不想平庸的人,过程中再难我也会一路前行。
    2018-12-13
    2
  • 桃园悠然在
    第三步【分析系统架构、代码,发现资源利用关键所在,思考优化策略】思考过程中可以拿阿姆达尔法则做指引,选出优化收益最大的模块
    2018-12-13
    2
  • 往事随风,顺其自然
    怎么实现操作的,讲解安利有什么具体指标?超过多少算不合理
    2018-12-13
    2
  • godtrue
    😜还没实际用大数据的东西,先自己开阔视野学习学习。
    2019-09-28
  • AF
    又看了一遍,觉得老师在代码方面功底很强!

    作者回复: ^_^

    2019-09-12
  • 小老鼠
    1、你们用的是什么性能测试工具?
    2、hadoop、spark是用java语言开发的吗?若是现在支持JDK9吗?
    2019-01-17
  • 木白
    在第二个案例中说到,先注册的Executor可能会认领全部的任务,也就是说其所在的物理机会把那个stage的全部工作都做了吗?但是本着“移动计算比移动数据更划算的理论”,如果所有的任务都在一台机器上做岂不是会导致数据的移动?不知道我的理解有没有错哈

    作者回复: 是的,数据会有更多移动

    2019-01-08
  • 追梦小乐
    李老师,案例2中说的 Worker 提供的计算单元数 默认是有几十个的吗?同时是不是可以根据spark.default.parallelism这个来指定的吗?
    2018-12-14
  • 往事随风,顺其自然
    代码直接提交到apache?为什么不能直接下找
    2018-12-13
收起评论
13
返回
顶部