IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Spark参数优化 -> 正文阅读

[大数据]Spark参数优化

Spark参数优化

  1. spark conf 中加入一些参数,会加速shuffle过程,这里根据数据量实际大小可以调节下面一些参数,实践中会对于大数据量JOIN能加速20%以上
    spark.default.parallelism 是控制每个stage的默认stage数量,一般是对RDD有效,而参数spark.sql.shuffle.partitions是控制spark sql的shuffle分区数量
spark.default.parallelism=1000
spark.sql.shuffle.partitions=1000
  1. shuffle数据量大或者硬盘空间不足,造成节点异常,可以①增加shuffle等待时间②划分更多的partitions③增加executor的内存
    但是由shuffle导致的异常的根本解决办法还是想办法减少shuffle的数据量
spark.rpc.askTimeout=30000
  1. 数据倾斜是同一个stage中极少数task处理的数据量远远比其他task要大或者慢,网上各种解决方法很多,就不啰嗦了。有一个参数对于少数task运行时间长比较有效,就是开启推测执行,如果一个task比较慢,会开启几个相同的task任务去执行,减少task因为网络传输等各种原因失败的情况,加快执行,防止因为一个task卡住导致运行极慢。
spark.speculation=true

适当调整推测执行的参数,可以使任务跑的更快

spark.speculation.interval=500
spark.speculation.quantile=0.85
spark.speculation.multiplie=1.6
  1. 数据量特别大(比方说超过100G)的时候,
    ① 不要使用persist和unperisist函数,容易失败,可能spark对于超大数据的persist不太支持,而且大量数据persist存在磁盘IO,本身比较耗时
    ② 尽量不要使用count函数
    ③ 大数据尽快落地
  2. 如果读取的数据源有很多小文件,读取会产生大量的task来处理,可以设置参数使得每个task处理的数据量变大,这样能减少task数量.spark.sql.files.openCostInBytes默认是4M,表示小于4M的会合并成一个文件,减少读取的task。
spark.sql.files.openCostInBytes=33554432   // 32M,默认是4M,用于小文件合并
spark.sql.files.maxPartitionBytes=268435456  // 256M,默认是64M,每个分区最大的文件大小,针对于大文件切分
  1. 集群如果不稳定,经常有机器挂掉,需要设置黑名单机制,某台机器上面的任务失败数量超过一定值后,调度器就会记住这台机器,后面的task就不会再往这个机器上面下发
spark.blacklist.enabled=true
  1. 如果driver有一些像collect这样的action操作,而拉取到driver上面的数据量又比较大,需要调整driver的maxResultSize值,不然任务会失败
spark.driver.maxResultSize=10g
  1. Spark任务有时候会失败自动重试,如果希望失败了不重试,可以制定尝试的次数
spark.yarn.maxAppAttempts=1
  1. 小文件太多,处理的时候也可以使用制定文件分块大小的方式来减少读取的task数量
spark.hadoop.mapreduce.input.fileinputformat.split.minsize=10240000
spark.hadoop.mapreduce.input.combinefileinputformat.split.minsize=10240000
spark.mapreduce.input.fileinputformat.split.maxsize=51200000
spark.mapreduce.input.fileinputformat.split.minsize=51200000
  1. 当程序jar包里面的依赖和集群里面相同依赖的版本不同时,会出现版本不兼容的情况,需要指定使用程序里面的jar包
spark.driver.userClassPathFirst=false
spark.executor.userClassPathFirst=false
spark.driver.extraClassPath=__app__.jar
spark.executor.extraClassPath=__app__.jar
  1. 程序如果对于资源稳定性要求较高,可以指定不进行动态分配
spark.dynamicAllocation.enabled=false
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:08:12  更:2022-03-06 13:10:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:27:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码