【源码寿命】【hystrix线程池源码】【ai代码源码计划】spark on yarn 源码

2024-12-23 03:10:11 来源:企业信使源码 分类:百科

1.在windows中spark的本地模式如何配置
2.Spark on Yarn 为什么出现内存超界container被kill

spark on yarn 源码

在windows中spark的本地模式如何配置

       1、在Spark中采用本地模式启动pyspark的命令主要包含以下参数:master:这个参数表示当前的pyspark要连接到哪个master,如果是local[*],就是源码寿命使用本地模式启动pyspark,其中,中括号内的hystrix线程池源码星号表示需要使用几个CPU核心(core)。

       2、肯定第一步是配置spark环境:包括linux系统的安装,java,ssh,Hadoop,Scala,spark的ai代码源码计划安装与环境变量设置。虽说简单,但对于初学者说,尤其是西瓜视频带源码没有使用过linux系统的,还是有些挑战。其中遗漏一些细节问题,都会出错。竞彩手机源码

       3、SparkonYarn模式备注:Yarn的连接信息在Hadoop客户端的配置文件中指定。通过spark-env.sh中的环境变量HADOOPCONFDIR指定Hadoop配置文件路径。

       4、最后的PhysicalPlanexecution阶段用Spark代替HadoopMapReduce。通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。

Spark on Yarn 为什么出现内存超界container被kill

       ä¸€ä¸ªExecutor对应一个JVM进程。 从Spark的角度看,Executor占用的内存分为两部分: ExecutorMemory 和 MemoryOverhead 。其中, ExecutorMemory 为JVM进程的Java堆区域, MemoryOverhead 为JVM进程中除Java堆以外占用的空间大小,包括方法区(永久代)、Java虚拟机栈、本地方法栈、JVM进程本身所用的内存、堆外内存(Direct Memory)等。

        spark.driver.memory 和 spark.executor.memory 分别设置Spark的Driver和Executor的 ExecutorMemory .

        spark.yarn.executor.memoryOverhead 和 spark.yarn.driver.memoryOverhead 分别设置Spark的Driver和Executor的 MemoryOverhead .

        另外,Spark会大量分配堆外内存,堆外内存默认最大可以和 ExecutorMemory 一样,可以通过javaOptions使用 MaxDirectMemorySize 配置最大值。

        堆外内存最大可以和 ExecutorMemory 一样,但是堆外内存又受 MemoryOverhead 限制,所以当 MaxDirectMemorySize , ExecutorMemory 和 MemoryOverhead 设置不合理时,会出现container内存超限,被Yarn kill的情况。

        比如, ExecutorMemory 为8G, MemoryOverhead 为4G, MaxDirectMemorySize 没有设置,此时yarn认为一个container最大可以使用G内存,但是堆外内存最大可以使用8G,导致container最大可以使用超过G内存(堆内内存+ 堆外内存),比G大, 最终被Yarn kill掉。

        合理的设置规则为: ExecutorMemory + MemoryOverhead > ExecutorMemory + MaxDirectMemorySize

        所以,Spark应用占用集群内存的总大小为:

        参数调优建议:

        每个Executor进程的内存设置4G~8G较为合适。

        每个Executor的CPU core数量设置为2~4个较为合适。

        以下是部分建议的参数设置:

本文地址:http://50.net.cn/news/34e779492171.html 欢迎转发