Spark的一些配置总结


Spark的一些配置总结

配置总结:
集群内存总量:

(executor个数) * (SPARK_EXECUTOR_MEMORY+ spark.yarn.executor.memoryOverhead)+(SPARK_DRIVER_MEMORY+spark.yarn.driver.memoryOverhead)

-----------------------------------------------------------------------------------

参数调优建议:每个Executor进程的内存设置4G~8G较为合适。

参数调优建议:Executor的CPU core数量设置为2~4个较为合适。
配置项 spark.kryoserializer.buffer.max,spark1.5.1默认值大小为64m,测试可以根据序列化对象大小确定上界值。
配置项 spark.yarn.executor.memoryOverhead,spark1.5.1默认值为executorMemory * 0.10, with minimum of 384,本次测试采用executorMemory * 0.20。
SPARK_EXECUTOR_MEMORY < SPARK_DRIVER_MEMORY< yarn集群中每个nodemanager内存大小。
如果需要使用collect算子将RDD的数据全部拉取到Driver上进行处理,那么必须确保Driver的内存足够大,否则会出现OOM内存溢出的问题。

-----------------------------------------------------------------------------------

一个Executor对应一个JVM进程。 从Spark的角度看,Executor占用的内存分为两部分:ExecutorMemory和MemoryOverhead

1、 ExecutorMemory为JVM进程的Java堆区域。大小通过属性spark.executor.memory设置。用于缓存RDD数据的memoryStore位于这一区域。 一个Executor用于存储RDD的空间=(ExecutorMemory– MEMORY_USED_BY_RUNTIME) * spark.storage.memoryFraction *spark.storage.safetyFraction 参数说明:
spark.storage.memoryFraction该参数用于设置RDD持久化数据在Executor内存中能占的比例,默认是0.6。也就是说,默认Executor 60%的内存,可以用来保存持久化的RDD数据。
spark.storage.safetyFraction:Spark1.5.1进程的默认堆空间是1g,为了安全考虑同时避免OOM,Spark只允许利用90%的堆空间,spark中使用spark.storage.safetyFraction用来配置该值(默认是0.9).
(spark.shuffle.memoryFraction该参数用于设置shuffle过程中一个task拉取到上个stage的task的输出后,进行聚合操作时能够使用的Executor内存的比例,默认是0.2。)
2、 emoryOverhead是JVM进程中除Java堆以外占用的空间大小,包括方法区(永久代)、Java虚拟机栈、本地方法栈、JVM进程本身所用的内存、直接内存(Direct Memory)等。 通过spark.yarn.executor.memoryOverhead设置,单位MB。如果Java堆或者永久代的内存不足,则会产生各种OOM异常,executor会被结束。 在Java堆以外的JVM进程内存占用较多的情况下,应该将MemoryOverhead设置为一个足够大的值,以防JVM进程因实际占用的内存超标而被kill。
当在YARN上运行Spark作业,每个Spark executor作为一个YARN容器运行。Spark可以使得多个Tasks在同一个容器里面运行。 同样,实际运行过程中ExecutorMemory+MemoryOverhead之和(JVM进程总内存)超过container的容量。YARN会直接杀死container。

-----------------------------------------------------------------------------------

Spark对Executor和Driver额外添加堆内存大小:

Executor端:由spark.yarn.executor.memoryOverhead设置,spark1.5.1默认值executorMemory * 0.10与384的最大值。
Driver端:由spark.yarn.driver.memoryOverhead设置,spark1.5.1默认值driverMemory * 0.10与384的最大值。

-----------------------------------------------------------------------------------
关于Spark On YARN相关的配置参数,关于内存分配情况的几个相关的参数: spark1.5.1
spark.driver.memory :默认值1g
spark.executor.memory :默认值1g
spark.yarn.am.memory :默认值512m
spark.yarn.executor.memoryOverhead :默认值为executorMemory * 0.10, with minimum of 384
spark.yarn.driver.memoryOverhead :默认值为driverMemory * 0.10, with minimum of 384
spark.yarn.am.memoryOverhead :默认值为 AM memory * 0.10, with minimum of 384

官方配置文档:
http://spark.apache.org/docs/1.5.1/configuration.html
http://spark.apache.org/docs/1.5.1/running-on-yarn.html

-----------------------------------------------------------------------------------
一个例子:

--num-executors 2 \
--executor-memory 2g \
--executor-cores 4 \
--driver-memory 2g \
--conf spark.kryoserializer.buffer.max=1024 \
--conf spark.yarn.executor.memoryOverhead=2048 \

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装和配置Spark SQL需要以下步骤: 1. 下载Spark:首先需要下载Spark的安装包。 2. 配置环境变量:将Spark的安装路径添加到系统的环境变量中,以便可以在任何位置使用Spark。 3. 配置spark-env.sh:在Spark的安装目录中,找到spark-env.sh文件并进行配置。这个文件包含了一些Spark的运行参数和环境变量的设置。 4. 配置works:在Spark的安装目录中,找到works文件并进行配置。这个文件用于配置Spark的集群管理器。 5. 配置历史服务器:如果需要使用Spark的历史服务器功能,可以进行相关配置。 6. Spark整合Hive的MetaStore:如果需要将Spark与Hive整合使用,需要配置Spark与Hive的元数据仓库。 7. 启动Spark:根据需要选择启动Spark的方式,可以是在本地环境下启动,也可以是在Standalone模式下启动。 8. 查看Spark Web接口位置:Spark提供了Web接口用于监控和管理Spark应用程序,可以查看Spark Web接口的位置。 需要注意的是,Spark在运行过程中可能需要读取Hive和HDFS的配置信息,所以需要将hive-site.xml、core-site.xml和hdfs-site.xml文件拷贝到Spark的conf目录下,以便Spark可以正确读取相关配置信息。\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Spark SQL配置记录总结-20230410](https://blog.csdn.net/u010503464/article/details/130061457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Spark Sql 安装](https://blog.csdn.net/weixin_33881753/article/details/92443668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值