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)

相关推荐

  • 27 视图集

    技术27 视图集 27 视图集视图集
    """视图集特点: 1,可以将一组相关的操作, 放在一个类中进行完成 2,不提供get,post方法, 使用retrieve, create方法来替代

    礼包 2021年11月4日
  • mysql中event怎么用

    技术mysql中event怎么用这篇文章主要为大家展示了“mysql中event怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中event怎么用”这篇文章吧。

    攻略 2021年11月2日
  • vue缓存使用方法(vue项目中什么时候用到缓存)

    技术vue的缓存实现方式有哪些这篇文章主要讲解了“vue的缓存实现方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue的缓存实现方式有哪些”吧!

    攻略 2021年12月22日
  • vue组件上绑定原生事件

    技术vue组件上绑定原生事件 vue组件上绑定原生事件将原生事件绑定在组件上 .native 修饰符:
    子组件
    templatediv class="demo"h2我是子组件/h2h3我是子组件中的信息

    礼包 2021年10月26日
  • 复杂的英语,高中英语复杂句子成分分析例句

    技术复杂的英语,高中英语复杂句子成分分析例句并列句中两个分句又内含从句的话,那就成为一种更加复杂的并列复合句复杂的英语。例句:While the men worked to stregthen the dam ,the

    生活 2021年10月20日
  • Js的基本数据类型有哪些

    技术Js的基本数据类型有哪些本篇内容介绍了“Js的基本数据类型有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  在

    攻略 2021年11月5日