[spark]spark资源分配

文章介绍了如何查看Hadoop集群的资源分布,包括节点线程数和内存大小,并提供了设置executor个数、CPU核数和内存大小的方法。建议根据集群的实际情况和任务类型(如IO密集或CPU密集)来调整executor配置,以达到最佳性能。对于共享队列的情况,还给出了关于executor数量与CPU使用率的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、常用方法

1、查看集群有多少资源

hadoop2:9870

2、查看每个节点的线程数和内存大小

1)查看单个节点的总线程数

2)查看每个节点的内存大小

应该是32G

3)查看队列的内存占比(常用的是hive队列)

3、设置executor个数 每个executor的CPU个数 每个CPU的内存大小

注:这个集群4个节点,每个节点8个线程,每个节点内存为32G

1、确定executor的cpu核数

每个executor的cpu设置为4(一般为3-6)比较合适

2、确定每个节点executor数量

executor nums=该节点可用的总线程数/每个executor的cpu数=6/4=1

3、 确定没个executor内存数量

如果使用hive队列的话,占总集群的内存最大占比为60%-80%即19G-25G即最大使用25G内存,

每个executor内存数=该节点可用的总内存数/该节点executor数=16G/1=19G(这里因为executor num实在太小,所以随便选了16)

这里可以看出来,内存数/线程数=16/4=4

内存数与线程数不是严格按照1:2,或者1:4,这个需要看一下每个节点的可用资源,具体情况具体计算。

但是一般cpu:内存=1:2-1:4,阿里云封装的时候1CU = 1cpu+4G内存, 即1:4,该值是比较合理的。

4、其他人共享这个队列时

如果和其他人共享这个队列,那么num-executors*executor-cores不要超过队列总cpu cores的1/3-1/2比较合适。(1*4即4个节点共4个executor)*4=16,总cpu为32线程 8/16=1/2

二、问了两个同学,但是我感觉他们也不知道具体怎么计算

1、京东

executor要么1:2要么1:4

2cpu 4g或2cpu 8g

我感觉这中的是不是也得分是io密集的还是cpu密集(就是比较吃cpu)的

如果是io的话,就内存多点,如果是cpu的话,那就cpu密集

如果数据量大的话,就多给executor个数

2、百度

1、日常小任务
executor nums 50
executor cores 4
executor memory 4G

2、较大统计任务
executor nums 200
executor cores 4
executor memory 4G

3、复杂逻辑&大shuffle计算任务
xecutor nums 300
executor cores 4
executor memory 6G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值