从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开始学大数据
登录|注册

19 | Spark的性能优化案例分析(上)

李智慧 2018-12-11
我们知道,现在最主流的大数据技术几乎都是开源的产品,不管是 Hadoop 这样的大数据存储与计算产品,还是 Hive、Spark SQL 这样的大数据仓库,又或者 Storm、Flink 这样的大数据流计算产品,还有 Mahout、MLlib 这样的大数据机器学习算法库,它们都来自开源社区。所以,我们在使用大数据、学习大数据的过程中肯定少不了要和开源社区打交道。
我在 Intel 工作期间主要工作就是参与 Apache 开源社区的大数据项目开发,其实上一期我讲的 Panthera 最初也是准备为 Hive 项目增强标准 SQL 处理能力而开发,但是因为和 Apache Hive 项目管理方在开发理念上的冲突,最终选择独立开源。后来我又参与了 Apache Spark 的开发,为 Spark 源代码提交了一些性能优化的 Patch。我想通过专栏两期的内容,具体介绍一下如何参与 Apache 这样开源社区的软件开发,如何进行软件性能优化,以及我在 Apache Spark 源码上做的一些优化实践。
一方面我希望你能借此更深入、系统地了解软件性能优化;另一方面也可以更深入了解 Spark 的一些运行机制,同时也可以了解 Apache 开源社区的运作模式。因为我们在使用各类大数据产品的时候,一定会遇到各种问题,想要解决这些问题,你可以直接到官方的开源社区去求助并寻找答案。在使用过程中,如果这些大数据产品不能满足你的需求,你可以阅读源代码并直接对源代码进行修改和优化。因为你在实践过程中产生的需求可能其他人也会有,你可以将你修改的源代码提交到开源社区,请求合并到发布版本上,供全世界开发者使用。这也是开源最大的魅力。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学大数据》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(20)

  • Dr. ZZZ
    如果是网络问题,可以考虑batch要发送的网络包,打包一起发送。另一个能想到的就是compression.

    作者回复: √

    2018-12-11
    11
  • Jack Zhu
    确定问题细节原因,针对主要问题进行解决
    1.如是网卡接入能力不够,则需要更换网卡或增加网卡
    2.如是网卡--应用之间的io瓶颈,则需要考虑零拷贝减少copy释放性能,使用大页内存减少页表miss,使用专门核心做收包缓存到软队列等

    作者回复: √

    2018-12-11
    9
  • 杰之7
    学习完基础篇,来学实战篇的Spark性能优化课程。通过这篇文章的阅读,无论是开源的软件,还是收费的软件,基本上都是被美国人开发出来的,至少这点上我们的路还很远,对于我自身,通过我的学习和实践,我希望至少能通过我的努力做到我想做的数据开发的工作。
    通过对这节内容的阅读,熟悉了开源软件的管理平台Apache,我们可以通过提交自己的代码到开源平台上,一旦经过Commiter通过,我们就是这个开源平台的Contributor。
    在软件性能优化上,不经过性能测试的软件不要优化,不懂其架构设计的软件不要进行性优化。因为性能测试包括多维度的指标,没有对比,何来优化,不懂架构设计,也不可能真正知道性能瓶颈在哪里。基于此,老师讲述了讲述了大数据软件优化的方向,SQL语句的优化,数据倾斜处理,也就是对不需要的数据剔除,Mapreduce、Spark代码优化,因为这些软件是开源,厉害的人就能针对公司具体的产品业务做源码的修改。通过配置参数的优化,也是运维工程师正做的事。
    总之,我们可以通过自己的一点点的努力让自己有那么一点点价值,能做对这个世界上一点有用的东西吧,这就够了。
    2018-12-11
    5
  • sunlight001
    考虑传输压缩,牺牲cpu的办法了

    作者回复: √

    2018-12-11
    4
  • 葛聂
    1. in网络打满:增加locality,尽量访问本地数据
    2. out网络打满:优化代码或数据,看能否提前合并减少发送的数据量
    3. 优化container摆放策略或并发数,避免热点
    2018-12-11
    3
  • godtrue
    1:换更强劲的网卡,千兆换万兆试试
    2:减少数据量,压缩数据,用CPU计算能力减空间
    3:减少IO次数,批量发送数据
    4:从业务逻辑下手,看看是否可以优化逻辑减少IO,或者减少数据量
    5:看看网络是否共享,不是自己的流量打满的网卡,如果是,采用独占的资源使用方式
    6:换一种方式,只发送必要的信息,将计算迁移到接收消息的机器上,或者部分迁移计算逻辑
    2019-09-28
    2
  • 星辰
    1.批量发送数据
    2.压缩传输数据
    3.增加带宽

    还有咩?

    作者回复: √

    2018-12-11
    2
  • 王亚南
    经常等待IO,可以考虑使用异步非阻塞IO模型,集体就是建立IO池,从多个链接读入数据,供系统处理。
    2018-12-11
    2
  • Oliver
    看到问题后先思考了一下,发现和大家的思路比较一致,分两点看
    1、网卡打满
        1)能否拆分业务执行时间点,因为是性能测试,pass
        2)优化业务逻辑
        3)能否批量发送
        4)升级网络硬件
    2、系统等待
        1)同步IO改为IO多路复用或异步IO
    2018-12-11
    1
  • 老男孩
    因为我对 hadoop,spark也是跟随专栏在学习。不知道计算过程中节点之间通信是一种什么方式?是否可以采用netty这样的网络框架,因为netty的数据读写都是在bytebuf中进行的。而且我们可以自定义channelHandler在数据出站入站的时候编解码,压缩解压。

    作者回复: √

    2018-12-11
    1
  • 请问文中的几个性能测试的图怎么快速生成呢?

    作者回复: 这个模块最后一期专门讲这个测试工具的设计开发

    2018-12-11
    1
  • 足迹
    硬件上可以升级网卡,比如百兆升级到千兆;
    软件上看看是否可以新的版本可以解决;
    逻辑上最关键,尽量做到数据本地性,能本地算好的一定不传输到其他节点。

    作者回复: √

    2018-12-11
    1
  • 吕宗霖
    Doris不是百度的Palo么?
    2019-09-02
  • iK_Leehom
    网卡可以比作一条水管,可以从两个角度出发,要么减少水量,要么增加水管
    2019-05-07
  • 张云翔
    针对业务进行分析 尽量不使用shuffle算子 减少网络开销
    2019-02-07
  • Levin
    明早是用尽了网卡的能力了,也就是网络瓶颈。
    两个方面,
    第一,提高网卡的能力,换个方式就是更换更强劲的网卡。
    第二,减少程序对网络的请求的压力,具体为频率和数据量。频率可以通过类似程序限流,数据量可以通过调整传输数据格式,协议,达到更小传输,这包括压缩数据,使用简化编码等方式传输更少的数据
    2019-02-03
  • 小老鼠
    压缩传输或者更换高质量网卡
    2019-01-17
  • 修行者
    我第一想法,首先是带宽是否不够
    2018-12-13
  • John
    李老师,我想请教下,Impala 和 Hive 的应用场景区别,换句话,就是什么时候用 Impala 比 Hive 有优势?谢谢

    作者回复: 后面大数据基准测试一期专栏会讨论

    2018-12-11
  • linazi
    老师 spark图谱如何生成那几个性能测试图

    作者回复: 后面专栏会讲

    2018-12-11
收起评论
20
返回
顶部