浅谈大数据概念及大数据Shuffle调优 参数调优

2018-03-07 16:20:55 1129浏览

        2018年大数据逐渐进入并影响着人们的生活,因此如今不论是参加大数据培训还是自学大数据的人都在不断的增加,但是关于大数据的概念仍然有不少的人不是很清楚,本编文章扣丁学堂小编就和大家分享一下2018大数据概念及大数据Shuffle调优,参数调优。



浅谈大数据概念及大数据Shuffle调优 参数调优



        首先我们先来看一下大数据概念是什么:大数据概念一般指大数据(巨量数据集合(IT行业术语))。百科解释为:大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出)Volume(大量)Velocity(高速)Variety(多样)Value(低价值密度)Veracity(真实性)



        下面我们来说一下数据Shuffle调优,参数调优:


        该参数用于设置shuffle write taskBufferedOutputStreambuffer缓冲大小。将数据写到磁盘文件之前,会先写入buffer缓冲中,待缓冲写满之后,才会溢写到磁盘。


        调优建议:如果作业可用的内存资源较为充足的话,可以适当增加这个参数的大小(比如64k),从而减少shuffle write过程中溢写磁盘文件的次数,也就可以减少磁盘IO次数,进而提升性能。在实践中发现,合理调节该参数,性能会有1%~5%的提升。


        spark.reducer.maxSizeInFlight


        默认值:48m


        该参数用于设置shuffle read taskbuffer缓冲大小,而这个buffer缓冲决定了每次能够拉取多少数据。


        调优建议:如果作业可用的内存资源较为充足的话,可以适当增加这个参数的大小(比如96m),从而减少拉取数据的次数,也就可以减少网络传输的次数,进而提升性能。在实践中发现,合理调节该参数,性能会有1%~5%的提升。


        spark.shuffle.io.maxRetries


        默认值:3


        shuffle read taskshuffle write task所在节点拉取属于自己的数据时,如果因为网络异常导致拉取失败,是会自动进行重试的。该参数就代表了可以重试的最大次数。如果在指定次数之内拉取还是没有成功,就可能会导致作业执行失败。


        调优建议:对于那些包含了特别耗时的shuffle操作的作业,建议增加重试最大次数(比如10),以避免由于JVMfull gc或者网络不稳定等因素导致的数据拉取失败。在实践中发现,对于针对超大数据量(数十亿~上百亿)shuffle过程,调节该参数可以大幅度提升稳定性。


        spark.shuffle.io.retryWait


        默认值:5s


        具体解释同上,该参数代表了每次重试拉取数据的等待间隔,默认是5s


        调优建议:建议加大间隔时长(比如60s),以增加shuffle操作的稳定性。


        spark.shuffle.memoryFraction


        默认值:0.2


        该参数代表了Executor内存中,分配给shuffle read task进行聚合操作的内存比例,默认是20%


        调优建议:在资源参数调优中讲解过这个参数。如果内存充足,而且很少使用持久化操作,建议调高这个比例,给shuffle read的聚合操作更多内存,以避免由于内存不足导致聚合过程中频繁读写磁盘。在实践中发现,合理调节该参数可以将性能提升10%左右。


        spark.shuffle.manager


        默认值:sort


        该参数用于设置ShuffleManager的类型。Spark 1.5以后,有三个可选项:hashsorttungsten-sortHashShuffleManagerSpark 1.2以前的默认选项,但是Spark 1.2以及之后的版本默认都是SortShuffleManager了。tungsten-sortsort类似,但是使用了tungsten计划中的堆外内存管理机制,内存使用效率更高。


        调优建议:由于SortShuffleManager默认会对数据进行排序,因此如果你的业务逻辑中需要该排序机制的话,则使用默认的SortShuffleManager就可以;而如果你的业务逻辑不需要对数据进行排序,那么建议参考后面的几个参数调优,通过bypass机制或优化的HashShuffleManager来避免排序操作,同时提供较好的磁盘读写性能。这里要注意的是,tungsten-sort要慎用,因为之前发现了一些相应的bug


        spark.shuffle.sort.bypassMergeThreshold


        默认值:200


        当ShuffleManagerSortShuffleManager时,如果shuffle read task的数量小于这个阈值(默认是200),则shuffle write过程中不会进行排序操作,而是直接按照未经优化的HashShuffleManager的方式去写数据,但是最后会将每个task产生的所有临时磁盘文件都合并成一个文件,并会创建单独的索引文件。


        调优建议:当你使用SortShuffleManager时,如果的确不需要排序操作,那么建议将这个参数调大一些,大于shuffle read task的数量。那么此时就会自动启用bypass机制,map-side就不会进行排序了,减少了排序的性能开销。但是这种方式下,依然会产生大量的磁盘文件,因此shuffle write性能有待提高。


        spark.shuffle.consolidateFiles


        默认值:false


        如果使用HashShuffleManager,该参数有效。如果设置为true,那么就会开启consolidate机制,会大幅度合并shuffle write的输出文件,对于shuffle read task数量特别多的情况下,这种方法可以极大地减少磁盘IO开销,提升性能。


        调优建议:如果的确不需要SortShuffleManager的排序机制,那么除了使用bypass机制,还可以尝试将spark.shffle.manager参数手动指定为hash,使用HashShuffleManager,同时开启consolidate机制。在实践中尝试过,发现其性能比开启了bypass机制的SortShuffleManager要高出10%~30%


        好了,关于2018大数据概念及大数据Shuffle调优,参数调优就先为大家说到这,喜欢大数据想要学习的小伙伴可以选择扣丁学堂进行学习。扣丁学堂不仅有专业的老师和与时俱进的课程体系,还有大量的大数据视频教程供学员观看学习,心动的小伙伴快快行动吧。扣丁学堂大数据学习群:209080834

关注微信公众号获取更多学习资料

关注微信公众号获取更多学习资料



查看更多关于大数据培训资讯的相关文章>>

标签: 浅谈大数据概念及大数据Shuffle调优 参数调优 大数据培训 大数据视频教程 大数据概念

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号