spark问题总结

博客内容概述了Spark Executor内存的总体布局,强调了Executor内存的两大区域以及它们的用途。讨论了`sparksql`中`limit`操作可能导致的任务阻塞问题,并对比了加`limit`与不加`limit`的执行差异。此外,还提到了Hive的mapjoin在Spark中的实现——BroadcastHashJoin。最后,列举了Spark中常见的Shuffle相关问题和解决方案,如FetchFailedException,并建议通过增加Executor内存和CPU来优化。
摘要由CSDN通过智能技术生成

spark

Executor内存总体布局

默认情况下,Executor不开启堆外内存,因此整个 Executor 端内存布局如下图所示:

整个Executor内存区域分为两块:

1、JVM堆外内存

大小由 spark.yarn.executor.memoryOverhead 参数指定。默认大小为 executorMemory * 0.10, with minimum of 384m。

此部分内存主要用于JVM自身,字符串, NIO Buffer(Driect Buffer)等开销。此部分为用户代码及Spark 不可操作的内存,不足时可通过调整参数解决。

The amount of off-heap memory (in megabytes) to be allocated per executor. This is memory that accounts for things like VM overheads, interned strings, other native overheads, etc. This tends to grow with the executor size (typically 6-10%).

2、堆内内存(ExecutorMemory)

大小由 Spark 应用程序启动时的 –executor-memoryspark.executor.memory 参数配置,即JVM最大分配的堆内存 (-Xmx)。Spark为了更高效的使用这部分内存,对这部分内存进行了逻辑上的划分管理。我们在下面的统一内存管理会详细介绍。

Spark 1.6之后引入了统一内存管理,包括了堆内内存 (On-heap Memory) 和堆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值