如何计算executor内存、executor数量、executor内核数量和驱动程序内存来使用spark读取40gb的文件?

kgsdhlau  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(479)

Yarn集群配置:8节点8芯/节点8 gb ram/节点1tb硬盘/节点

mfuanj7w

mfuanj7w1#

执行器内存和执行器数量
executor memory和no of executors/节点是相互关联的,因此您首先要选择executor memory或no of executors,然后根据您的选择,您可以按照此设置属性以获得所需的结果
在yarn中,这些属性会影响可以在nodemanager中基于 spark.executor.cores, spark.executor.memory 属性值(以及执行器内存开销)
例如,如果一个集群有10个节点(ram:16gb,cores:6),并设置了以下Yarn特性

yarn.scheduler.maximum-allocation-mb=10GB 
yarn.nodemanager.resource.memory-mb=10GB
yarn.scheduler.maximum-allocation-vcores=4
yarn.nodemanager.resource.cpu-vcores=4

然后使用spark属性spark.executor.cores=2,spark.executor.memory=4gb,您可以期望每个节点有2个执行器,这样总共您将得到19个执行器+1个驱动程序容器
如果Spark特性 spark.executor.cores=3, spark.executor.memory=8GB 然后您将得到9个执行器(仅1个执行器/节点)+1个驱动程序链接容器
驱动器存储器 spark.driver.memory -每个spark驱动程序的java堆内存的最大大小 spark.yarn.driver.memoryOverhead -每个驱动程序可从yarn请求的额外堆外内存量。这与spark.driver.memory一起,是yarn可以用来为驱动程序进程创建jvm的总内存。
spark驱动程序内存不会直接影响性能,但它确保spark作业在驱动程序上运行时没有内存限制。使用以下公式调整分配给spark驱动程序的内存总量,假设值为 yarn.nodemanager.resource.memory-mb 是x:
x大于50 gb时为12 gb
当x介于12 gb和50 gb之间时为4 gb
当x介于1gb和12GB之间时为1gb
x小于1 gb时为256 mb
这些数字是 spark.driver.memory 以及 spark.yarn.driver.memoryOverhead . 管理费用应占总费用的10-15%。
您还可以通过这个cloudera链接来调优spark作业

相关问题