tungsten

四、Spark性能优化:shuffle调优

僤鯓⒐⒋嵵緔 提交于 2020-04-08 15:03:47
shuffle调优 调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。因此大家务必把握住调优的基本原则,千万不要舍本逐末。下面我们就给大家详细讲解shuffle的原理,以及相关参数的说明,同时给出各个参数的调优建议。 ShuffleManager发展概述 在Spark的源码中,负责shuffle过程的执行、计算和处理的组件主要就是ShuffleManager,也即shuffle管理器。而随着Spark的版本的发展,ShuffleManager也在不断迭代,变得越来越先进。 在Spark 1.2以前,默认的shuffle计算引擎是HashShuffleManager。该ShuffleManager而HashShuffleManager有着一个非常严重的弊端,就是会产生大量的中间磁盘文件,进而由大量的磁盘IO操作影响了性能。 因此在Spark 1.2以后的版本中,默认的ShuffleManager改成了SortShuffleManager

Shuffle 调优之 HashShuffleManager 和 SortShuffleManager

。_饼干妹妹 提交于 2020-03-02 16:37:55
spark.shuffle.manager:hash、sort、tungsten-sort(自己实现内存管理)spark.shuffle.sort.bypassMergeThreshold:200 spark 1.2.x版本以后,默认的shuffle manager,是什么呢? SortShuffleManager。 SortShuffleManager与HashShuffleManager两点不同: 1、SortShuffleManager会对每个reduce task要处理的数据,进行排序(默认的)。 2、SortShuffleManager会避免像HashShuffleManager那样,默认就去创建多份磁盘文件。一个task,只会写入一个磁盘文件,不同reduce task的数据,用offset来划分界定。之前讲解的一些调优的点,比如consolidateFiles机制、map端缓冲、reduce端内存占比。 这些对任何shuffle manager都是有用的。 总结: 如何来选择? 1、需不需要数据默认就让spark给你进行排序?就好像mapreduce,默认就是有按照key的排序。 如果不需要(不需要排序)的话,其实还是建议搭建就使用最基本的HashShuffleManager,因为最开始就是考虑的是不排序,换取高性能; 2、什么时候需要用sort shuffle

在 Databricks 可获得 Spark 1.5 预览版

独自空忆成欢 提交于 2019-12-01 04:51:26
我们兴奋地宣布,从今天开始,Apache Spark1.5.0的预览数据砖是可用的。我们的用户现在可以选择提供集群与Spark 1.5或先前的火花版本准备好几个点击。 正式,Spark 1.5预计将在数周内公布,和社区所做的QA测试的版本。鉴于火花的快节奏发展,我们觉得这是很重要的,使我们的用户尽快开发和利用新特性。与传统的本地软件部署,它可以需要几个月,甚至几年,从供应商收到软件更新。数据砖的云模型,我们可以在几小时内更新,让用户试他们的火花版本的选择。 What’s New? The last few releases of Spark focus on making data science more accessible, through high-level programming APIs such as DataFrames , machine learning pipelines , and R language support . A large part of Spark 1.5, on the other hand, focuses on under-the-hood changes to improve Spark’s performance, usability, and operational stability . Spark 1.5 delivers