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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 一、对运行在YARN上的Spark进行性能调优 -> 正文阅读

[大数据]一、对运行在YARN上的Spark进行性能调优

1、运行环境Jar包管理及数据本地性原理调优

1.1、运行环境Jar包管理及数据本地性调优实践

启动spark程序时,其他节点会自动下载jar包并进行缓存,下次启动时如果包没有变化,则直接读取本地缓存的包。缓存清理间隔在yarn-site.xml通过以下参数配置:

<property>
	<name>yarn.nodemanager.localizer.Cache.cleanip.interval-ms</name>
	<value>10000</value>
</property>

1.2、数据本地性调优

val conf = new SparkConf()
conf.set("spark.locality.wait", "3s")
conf.set("spark.locality.wait.node", "3s")
conf.set("spark.locality.wait.process", "3s")
conf.set("spark.locality.wait.rack", "3s")

默认情况下,这些等待时长都是3秒。观察大部分Task的数据本地化级别都是PROCESS_LOCAL的话,那就不需要调节这个参数了,如果很多Task的级别都是NODE_LOCAL、ANY,那么最好需要调节一下数据本地化的等待时长。

2、Spark on Yarn的两种不同的调度模型及其优化

2.1、Spark on Yarn的两种不同类型模型优劣分析

按照spark应用程序中Driver的位置不同,分为两种模式:yarn-cluster和yarn-client。在yarn-client模式下,Driver运行在启动spark应用的节点上,而yarn-cluster模式下,Driver运行在yarn container容器中,客户端可以从集群断开。

2.2、Spark on Yarn模式下Executor经常被杀死

如果出现Container killed by YARN for exceeding memory limits...错误,那么很明显内存被用完,可以考虑增加内存。
优化方案有:

  • 移除RDD缓存操作
  • 增加该job的spark.storage.memoryFaction系数值
  • 增加该job的spark.yarn.executor.memoryoverhead值

2.3、yarn-cluster模式下JVM栈内存溢出

有些spark作业在yarn-client模式下是可以正常运行的,但是在yarn-cluster模式下,会报JVM的PermGen(永久代)的内存溢出(OOM)。
出现以上问题的原因是:yarn-client模式下,Driver运行在本地机器上,spark使用JVM的PermGen的配置,是本地的默认配置128MB;但是在yarn-cluster的模式下,Driver运行在集群的某个节点上,spark使用的JVM的PermGen是没有经过配置的,默认82MB,故有时会出现PermGen Out of Memory error Log。
调优方案如下:

  1. 在spark-submit脚本中设置PermGen
-conf spark.driver.extraJavaOptions="-XX:PermSize=128M --MaxPermSize=256M"
  1. 如果使用SparkSQL,SQL中使用大量的or语句,也可能会报出JVM stack overflow,JVM栈内存溢出,此时可以把复杂的SQL简化为多个简单的SQL进行处理
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:18:18  更:2021-08-09 10:19:56 
 
开发: 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年5日历 -2024/5/17 18:09:18-

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