spark调优汇总(spark调优最佳配置)

技术如何理解spark调优中的高层通用调优如何理解spark调优中的高层通用调优,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一,并行度集群

对于如何理解spark调优中的高级通用调优,很多新手都不是很清楚。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。

一,并行度

除非您将每个操作的并行度设置得足够高,否则集群不会得到充分利用。Spark会根据文件大小自动设置地图数量,是否可以分割(输入格式后面会详细说明,各种输入地图数量的确定会详细说明)。对于分布式reduce操作,如groupbykey和reducebykey,默认情况下,它使用分区数量最多的父RDD的分区数量来确定reduce的数量。您也可以通过设置spark.default.parallelism来更改默认值。建议的值是每个CPU执行2-3个任务。

二,Reduce任务的内存使用

有时候,内存溢出不是因为你的RDD不适合内存,而是因为你的一个任务的工作集太大了。例如,使用groupbykey时,缩减任务数据集太大。Spark的shuffle操作(按键排序、按键分组、按键减少、连接等)将构建一个哈希表,每个任务将执行一个分组的数据,这个数据通常非常大。最简单的改进方法是增加并行性,使每个任务的输入变小。Spark可以高效地支持短至200毫秒的任务,因为Executor的JVM被重用,可以降低启动成本,所以可以安全地增加并行度,超过你的集群核心数量。

三,广播变量

使用spark的广播功能可以大大减少每个序列化任务的大小以及在集群中执行作业的成本。如果您在任务中使用大型对象,例如静态表,请考虑将其声明为广播变量。在驱动程序节点,spark会打印出每个任务的序列化大小,这样你就可以通过查看任务的大小来判断你的任务是否过大。通常,如果任务的大小超过20KB,就值得调优。

如何理解spark调优中的高层通用调优

四,数据本地性

数据的位置可能会对Spark作业产生重大影响。如果数据和对其进行操作的代码在一起,计算通常会很快。但是如果代码和数据分离,其中一个必须移动。通常,序列化的代码会移动到数据所在的位置,因为数据通常比代码大得多。Spark构建调度计划的原则是数据局部性。

局部性是数据离处理它的代码有多远。根据数据和代码的当前位置,数据局部性级别。从最近到最远的顺序如下:

1,PROCESS_LOCAL

并且数据和代码在同一个JVM中,这是最好的数据局部性。

2,NODE_LOCAL

数据和代码在同一个节点。例如,数据位于同一节点的HDFS或统一节点的执行器上。因为数据必须在多个进程之间移动,所以它比PROCESS_LOCAL稍慢。

3,NO_PREF

数据可以在没有数据局部性的情况下从任何地方快速访问。

4,RACK_LOCAL

数据和代码在同一个机架上。数据位于同一机架中的不同服务器上,因此需要通过网络发送,通常是通过单个交换机。

5,ANY

数据在网络的其他地方,而不是在同一个机架中。

Spark倾向于根据最高的数据局部性来安排任务,但这通常是不可能的。当任何空闲执行器上没有未处理的数据时,Spark将切换到较低的数据局部性。在这种情况下,有两种选择:

1)、等待CPU空闲,然后在同一台服务器上启动任务。

2)、在数据需要迁移的较远的地方立即开始新的任务。

Spark典型的处理策略是等待繁忙的CPU释放,时间很短。一旦超时发生,数据将被移动到空闲的中央处理器来执行任务。每个级别之间的回退等待超时可以单独配置,也可以全部在一个参数中配置。如果任务很长并且数据局部性很差,可以适当调整与Spark.locatity超时相关的配置。具体配置如下:

属性

系统默认值

意义

火花。地点。等等

3s

超时,放弃等待数据局部性较低的新任务。

spark . location . wait . node

火花。地点。等等

节点本地等待超时

spark . location . wait . process

火花。地点。等等

进程本地等待超时

spark . location .等等. rack

火花。地点。等等

机架本地等待超时

主要调音是序列化和内存调优.

阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/149257.html

(0)

相关推荐

  • 电脑的用户名和密码怎么查看,宽带用户名和密码怎么查看

    技术电脑的用户名和密码怎么查看,宽带用户名和密码怎么查看宽带用户名和密码查看方法如下电脑的用户名和密码怎么查看:1、首先打开浏览器,然后在地址栏输入路由器在的管理IP地址(地址如果不知道的话,可以看一下路由器背面一般都会

    生活 2021年10月30日
  • 如何理解Go运行时中的Mutex

    技术如何理解Go运行时中的Mutex这篇文章主要讲解了“如何理解Go运行时中的Mutex”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Go运行时中的Mutex”吧

    攻略 2021年10月22日
  • ADO.NET中如何使用连接模式访问数据库中的数据

    技术ADO.NET中如何使用连接模式访问数据库中的数据本篇内容介绍了“ADO.NET中如何使用连接模式访问数据库中的数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处

    攻略 2021年12月3日
  • 恩格斯名言,你有自己的名言吗

    技术恩格斯名言,你有自己的名言吗有,我的名言条是引用《周易》里面的一句:天行健,君子以自强不息,地势坤,君子以厚德载物恩格斯名言。这句名言来提醒自己。这句话什么意思?是告诉我,君子要像天一样自强不息。也要像地一样厚德载物

    生活 2021年10月26日
  • 如何使用Python 代码格式化工具 Black-Python

    技术如何使用Python 代码格式化工具 Black-Python如何使用Python 代码格式化工具 Black-Python,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴

    攻略 2021年10月25日
  • Linux内核Device Tree怎么创建

    技术Linux内核Device Tree怎么创建这篇文章主要讲解了“Linux内核Device Tree怎么创建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux内

    攻略 2021年11月23日