关于SPARK_WORKER_MEMORY和SPARK_MEM

本文详细解释了Spark中SPARK_WORKER_MEMORY与SPARK_MEM的区别及其作用。SPARK_WORKER_MEMORY指计算节点worker可使用的内存,可通过配置文件进行调整。SPARK_MEM则是SparkContext提交给worker的executor进程所需的内存,如果worker的可用内存不足,则不会分配executor。

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

在spark中最容易混淆的是各种内存关系。本篇讲述一下SPARK_WORKER_MEMORY和SPARK_MEM。

SPARK_WORKER_MEMORY是计算节点worker所能支配的内存,各个节点可以根据实际物理内存的大小,通过配置conf/spark-env.sh来分配内存给该节点的worker进程使用。在spark standalone集群中,如果各节点的物理配置不一样,conf/spark-env.sh中的配置也可以不一样。习惯上,为了维护方便,我们修改了master的配置,然后就scp到各个节点上,生产上,我们还是应该根据各个节点的实际情况来配置。
比如: Spark1.0.0 Standalone模式部署中可以分别修改各节点的SPARK_WORKER_MEMORY参数:
  • hadoop2为700m
  • hadoop3为800m
  • hadoop4为900m
  • hadoop5为1000m

SPARK_MEM是SparkContext提交给worker运行的executor进程所需要的内存,如果worker本身能支配的内存小于这个内存,那么在该worker上就不会分配到executor。Spark Application在SparkContext里中没有配置内存需求的情况下,如果设置了环境变量SPARK_MEM,Spark Application则取设置的数值,不然取缺省值512m。

现在在客户端wyy上配置SPARK_MEM=900m,然后运行spark-shell,查看监控情况,可以发现,spark-shell只使用了hadoop4和hadoop5这两个worker,而hadoop2和hadoop3因为内存满足不了spark-shell的内存需求而没有使用。
hadoop@wyy:/app/hadoop/spark090$ export SPARK_MEM=900m
hadoop@wyy:/app/hadoop/spark090$ MASTER=spark://hadoop1:7077 bin/spark-shell

 
TIPS:
如果是非集群中客户端提交Spark Application,那么该客户端的spark部署目录要和集群中的目录一致,不然容易出错。
Spark Application申请内存的优先次序是:SparkContext中配置 > SPARK_MEM > 缺省值512m

本文转自http://blog.csdn.net/book_mmicky/article/details/25714449,所有权利归原作者所有。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值