【编者按】每个人的成长曲线不同,有的人在研究生之时就已有相当知名的产品和框架,从而在接下来的工作中一路顺风顺水,有的人缺需要经历一个又一个的坑才能成长,不管是前者的聪明高效,还是后者的笨鸟先飞,他们都是在迈着脚步不断地向前。不妨停下脚步看下一些同行,以激励自己更好地前行。CSDN与你相约SDCC 2017·深圳站讲师。
2017年6月10-11日,SDCC 2017将在创新之都深圳火热开启。据悉,英特尔软件与服务部大数据研发经理程浩将在SDCC 2017·深圳站之大数据技术实战峰会带来题为《Apache Spark大数据计算性能调优之部署最佳实践》的分享。更多峰会嘉宾和议题请点击这里。
以下为正文:
【嘉宾】程浩,英特尔软件与服务部大数据研发经理。Intel亚太研发中心Spark团队研发经理,Apache Spark活跃开发者,致力于Apache Spark框架在Intel平台架构上的性能分析与优化。
CSDN:请介绍下您和您所在的团队,以及目前的工作重点。
程浩:我们团队隶属于英特尔软件与服务事业部系统技术优化部门,早在2012年就开始与UC Berkeley的AMPLab实验室合作交流,在Spark开源生态圈中保持密切合作,在过去的几年中,我们为Apache Spark生态圈组件提交了大量的功能、性能优化代码,并辅助国内外公司在实际大数据生产环境中落地Spark应用,随着Apache Spark日趋成熟稳定,逐渐为大数据处理领域内最广泛使用的框架之一,我们团队也把注意力放到研究最佳的技术方案,包括Spark软件本身的改进,也包括采用英特尔的硬件及其软件加速库来提高Spark的运行效率,为Spark用户在英特尔的硬件架构平台上提供最佳性价比技术解决方案支持。
CSDN:Spark框架在英特尔平台上的融合,在架构上具有怎样的特点?有哪些具体的适用场景?
程浩:英特尔的软硬件平台在数据中心部署占据了很高的比例,随着Spark功能越来越完备,很多公司都采用了Spark作为其最主要的大数据计算引擎之一,但是Spark框架诞生之初,并非为英特尔的硬件平台量身打造,如何充分挖掘现有英特尔架构平台的计算性能,优化Spark应用的执行效率,对于提升硬件资源利用率,降低成本有非常大的效益。
Apache Spark开源社区公平性原则很强,对于特定硬件厂商的优化技术方案很难合并到Spark的主干代码中,而英特尔对其自身的硬件平台往往提供了很多软件驱动和加速库,这些性能优化在单机基准测试中体现非常明显,我们团队做了大量将Spark和英特尔相关加速库集成的工作,并通过授权相关优化代码给关键客户、走第三方大数据发行商(比如Cloudera)或者开源相关功能代码等方式,把我们的优化方案提供给Spark终端用户。另外,英特尔的硬件技术发展推陈出新非常快,新的硬件技术对于传统的软件架构设计会产生很大影响,比如,通常我们认为磁盘是比较慢的设备,但是英特尔的最新一代SSD将提供极大的吞吐率、超高的IOPS,颠覆了现有的软件框架设计时的前提假设,这些软件架构需要大量改写甚至重写才能发挥出英特尔硬件的优势,不仅仅是存储,英特尔在内存、网络、计算芯片等硬件设备上也有大量的创新和新产品,我们团队和英特尔内部相关技术专家密切合作,做了一些前瞻性的原型开发,希望对于未来的大数据软件架构设计产生积极影响。
CSDN:影响Spark性能的因素有哪些?有哪些优化层面?您认为在Spark性能优化中应坚持哪些原则?
程浩: Spark是一款非常优秀的分布式内存计算框架,涉及到网络,磁盘,内存,软件算法实现,作业调度策略等,影响Spark应用程序性能的因素也往往是多方面的。比如数据调度本地性对于网络负载会有很大影响,分布式环境下任务调度均衡性、任务调度的粒度、磁盘和内存的设置,甚至用户程序自身有没有充分考虑现有的软硬件架构配置等,往往需要具体问题具体分析。
通常来说,我认为Spark性能优化基本原则是分析先行,即通过各种性能分析工具包括Spark自带的作业实时运行状态监控工具,先宏观分析Spark应用的瓶颈出现在哪里(网络、磁盘、CPU或者分布式作业调度均衡、Java GC等),或者压根没有出现任何瓶颈(作业调度的并行度设置太高,或者作业量太小等),有必要时可以使用比如Visual VM或者VTune等工具和程序日志,分析程序执行时单机热点。Spark集群和应用提供了大量的配置参数,需要根据性能监控分析,进而有针对性的调整Spark集群配置,Spark应用配置,直至应用代码优化甚至是Spark自身的软件代码优化。当然一方面需要对于Spark框架的基本原理有一定理解,甚至是阅读Spark的相关代码,另外也需要一定的性能监控分析工具使用的经验。
CSDN:不同的业务场景和数据情况,需要对Spark作业进行多方面的调节和优化。硬件调优在Spark性能调优中扮演了什么样的角色?具体调优内容有哪些?
程浩:通常为了Spark应用能达到最好的性能,需要通过修改各种软件参数配置,设置程序代码等手段,确保程序运行时充分利用计算机系统硬件资源,让应用的瓶颈落脚到硬件能力的限制上来,比如CPU的利用率保持在80%-90%以上,磁盘或者网络吞吐率已经到达理论的上限带宽等,在这种情况下,我们认为应用程序的性能基本已经到最佳状态了。此时,若想更进一步提升应用性能,升级受限的硬件设备或许是唯一选择。比如对于Spark SQL或者ETL类作业而言,磁盘的吞吐率可能是最大的性能瓶颈,只能通过升级磁盘来达到提升性能目的。
硬件调优不像软件,手段非常有限也不透明,这里的调优只是体现在对现有硬件设备的升级,或者新的大数据计算集群硬件采购过程中,可以采用的一些方法来度量或者分析性价比,让CPU、网络、磁盘和内存等硬件配置更加合理。
CSDN:在释放硬件性能、监控硬件性能发挥方面,有怎样的调优手段?能否分享一些典型的Spark实践案例?
程浩:选择合适的监控工具,性能分析是第一步,更多细节,我会在SDCC的分享中做详细介绍,欢迎大家来现场或者和我邮件交流。
CSDN:您在Spark领域深耕多年,可以分享一些Spark应用和实践的经验吗?
程浩: Spark提供了一套非常简单易用的API集合,让开发人员可以很快上手,并关注于业务代码实现,和其它软件库的API一样,使用这些API可以非常灵活,而不用关心底层实现细节,最后程序还能透明的被放到大数据平台中执行。Spark开源社区为了达到易用性目的做了大量的开发工作,即便如此,实际应用场景可以非常复杂,大数据计算可能只是其中一个环节,还有各种集群资源分配管理、多作业调度管理、多租户、安全性、日志管理、存储等需求,很多公司甚至拥有独立的开发运维团队来负责大数据平台的日常程序监控和管理,一些大数据独立发行厂商也提供相关解决方案。
Spark应用实践,复杂在满足业务需求的同时,还能长时间稳定运行和调度,并和其它的大数据组件配合工作,需要开发或者运维技术人员对于计算机基础知识、大数据生态圈组件有比较深刻理解。当然,应用程序自身代码的健壮性、可扩展性,以及良好的应用架构,是最佳实践的基础,不单单对于Spark应用实践,对于任何程序开发实践经验都是适用的。
CSDN:您最期待在SDCC 2017·深圳站大会上看到哪些内容?
程浩:希望能看到更多大数据在垂直领域内的应用分享,也希望能和相关技术专家交流心得体验,了解大数据应用中的痛点和难点,以及对于大数据框架技术上有哪些重要的潜在需求。
SDCC讲师专访系列:
SDCC 2017·深圳站之架构&大数据技术实战峰会将于2017年6月10-11日于深圳南山区中南海滨大酒店举行,集阿里、腾讯、百度、滴滴出行、Intel、微博、唯品会的资深架构师和一线实践者,纳知名研发案例,遇见苏宁云商大数据中心总监陈敏敏、Apache RocketMQ联合创始人冯嘉、饿了么大数据平台部总监毕洪宇等大牛。
票务火热,预购从速,团购立减1000元,更多详情及购票可点击「阅读原文」查看。