19 | Spark的性能优化案例分析(上)
李智慧
该思维导图由 AI 生成,仅供参考
我们知道,现在最主流的大数据技术几乎都是开源的产品,不管是 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/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了作者在Apache开源社区的软件开发经历和在Apache Spark源码上进行的性能优化实践。首先,文章详细介绍了Apache开源社区的组织和参与方式,包括项目管理委员会、committer和contributor的角色及参与流程。随后,着重讨论了软件性能优化的重要性和一般过程,强调了性能测试和架构设计的重要性。从大数据软件性能优化的角度出发,提出了SQL语句优化、数据倾斜处理、MapReduce、Spark代码优化、配置参数优化以及大数据开源软件代码优化等方面的优化方法。通过这些内容,读者可以了解到作者在Apache开源社区的参与经历,以及在大数据软件性能优化方面的实践经验和建议。文章内容涵盖了开源社区参与方式、软件性能优化的一般过程和大数据软件性能优化的具体方法,对于对开源社区和大数据领域感兴趣的读者具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学大数据》,新⼈⾸单¥68
《从 0 开始学大数据》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(22)
- 最新
- 精选
- Jack Zhu确定问题细节原因,针对主要问题进行解决 1.如是网卡接入能力不够,则需要更换网卡或增加网卡 2.如是网卡--应用之间的io瓶颈,则需要考虑零拷贝减少copy释放性能,使用大页内存减少页表miss,使用专门核心做收包缓存到软队列等
作者回复: √
2018-12-1127 - sunlight001考虑传输压缩,牺牲cpu的办法了
作者回复: √
2018-12-116 - yang1.批量发送数据 2.压缩传输数据 3.增加带宽 还有咩?
作者回复: √
2018-12-115 - 旭请问文中的几个性能测试的图怎么快速生成呢?
作者回复: 这个模块最后一期专门讲这个测试工具的设计开发
2018-12-113 - 老男孩因为我对 hadoop,spark也是跟随专栏在学习。不知道计算过程中节点之间通信是一种什么方式?是否可以采用netty这样的网络框架,因为netty的数据读写都是在bytebuf中进行的。而且我们可以自定义channelHandler在数据出站入站的时候编解码,压缩解压。
作者回复: √
2018-12-1122 - 足迹硬件上可以升级网卡,比如百兆升级到千兆; 软件上看看是否可以新的版本可以解决; 逻辑上最关键,尽量做到数据本地性,能本地算好的一定不传输到其他节点。
作者回复: √
2018-12-112 - John李老师,我想请教下,Impala 和 Hive 的应用场景区别,换句话,就是什么时候用 Impala 比 Hive 有优势?谢谢
作者回复: 后面大数据基准测试一期专栏会讨论
2018-12-11 - linazi老师 spark图谱如何生成那几个性能测试图
作者回复: 后面专栏会讲
2018-12-11 - 钱1:换更强劲的网卡,千兆换万兆试试 2:减少数据量,压缩数据,用CPU计算能力减空间 3:减少IO次数,批量发送数据 4:从业务逻辑下手,看看是否可以优化逻辑减少IO,或者减少数据量 5:看看网络是否共享,不是自己的流量打满的网卡,如果是,采用独占的资源使用方式 6:换一种方式,只发送必要的信息,将计算迁移到接收消息的机器上,或者部分迁移计算逻辑2019-09-2834
- 杰之7学习完基础篇,来学实战篇的Spark性能优化课程。通过这篇文章的阅读,无论是开源的软件,还是收费的软件,基本上都是被美国人开发出来的,至少这点上我们的路还很远,对于我自身,通过我的学习和实践,我希望至少能通过我的努力做到我想做的数据开发的工作。 通过对这节内容的阅读,熟悉了开源软件的管理平台Apache,我们可以通过提交自己的代码到开源平台上,一旦经过Commiter通过,我们就是这个开源平台的Contributor。 在软件性能优化上,不经过性能测试的软件不要优化,不懂其架构设计的软件不要进行性优化。因为性能测试包括多维度的指标,没有对比,何来优化,不懂架构设计,也不可能真正知道性能瓶颈在哪里。基于此,老师讲述了讲述了大数据软件优化的方向,SQL语句的优化,数据倾斜处理,也就是对不需要的数据剔除,Mapreduce、Spark代码优化,因为这些软件是开源,厉害的人就能针对公司具体的产品业务做源码的修改。通过配置参数的优化,也是运维工程师正做的事。 总之,我们可以通过自己的一点点的努力让自己有那么一点点价值,能做对这个世界上一点有用的东西吧,这就够了。2018-12-1112
收起评论