spark集群参数配置理解

本文详细介绍了 Spark 的配置文件 spark-env.sh 中各项参数的意义及最佳实践,并对比了 YARN 下 client 和 cluster 两种模式的区别,帮助读者更好地理解和配置 Spark 环境。

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

一、spark-env.sh


图1 我自己的配置文件spark-env.sh

line 7中指定hadoop安装目录的配置路径,如果不配置这一项,就要把${HADOOP_HOME}/etc/hadoop下的所有xml文件拷贝到${SPARK_HOME}/conf下,而且不保证正确,所以最好配置这一项。
line 9中如果不配置,在运行spark-submit的时候需要用--jars参数指定这个依赖的jar文件。
line13每个worker需要的core数
line14是指分配给运行在worker节点上的worker进程的内存大小
line15是指分配给在worker进程中executor的内存大小,系统默认是512M。之前一直迷惑为什么我worker进程配置了1G,但是在web ui上观察到的是1024M/512M used,就是这个原因。
line16是指worker进程的数目,如果你设置为2,那么在每个worker节点启动的进程数就是2。

因此,生成的executoer的总个数为num = worker节点数 X worker_instances数(worker进程数)X executor数(截图中没配置,即SPARK_EXECUTOR_INSTANCES,默认为2)。

上面三行都要根据具体的worker节点的物理硬件的限度来配置,超过这个限度任务就启动不起来。按照我的理解,上述三者的关系可用下图来解释。


图2

executor是worker里的线程,被限制用可用的cpu core数来执行。
另外在运行spark-submit或者中另一个叫做spark-defaults.con.template的配置文件中,有一项driver_memory。这个首先就要理解我是用过的spark程序的两大类四小种(实际上肯定不止)运行模式了。
两大类是指spark standalone模式和yarn,其实官网上还有一种叫做mesos的部署模式,模式上跟yarn的应该差不多,但原理没去了解,另外还有部署在amazon ec2上的,这后面两个都没亲手测试过,不谈了。,
四小种是指如下:
在standalone下,可分为1)local模式,用本地的线程代替worker进程。2)spark集群,用--master指定spark集群的master节点(其实上面说的mesos部署模式就是用mesos集群代替spark集群,将mesos集群的master节点指定给--master参数)
在yarn模式下,spark系统会将application丢给yarn集群去处理,因此我们强调一定要在图1中的line7示例的配置hadoop集群的信息。然后yarn模式下又根据driver程序是在本地提交还是提交到远程集群分为3)yarn-clien和4)yarn-cluster。因此,driver_memory参数的配置只针对yarn模式下有效,对standalone无效。更具体的,还有例子,可以看看这篇博文《Spark1.0.0 应用程序部署工具spark-submit》


二、yarn-cluster和yarn-client
按照对官网上两种模式描述的理解,我绘制如下图:
In yarn-cluster mode , the Spark driver runs   inside an application master process   which is managed by YARN on the cluster, and the   client can go away after initiating the application。


图3 yarn-cluster模式

In   yarn-client mode , the driver runs   in the client process , and the application master is only used for requesting resources from YARN。


图4 yarn-client模式

因此,yarn-cluster更适用于实际应用,而yarn-client更适用于交互式的应用,比如说调试。更具体的在这篇博文中有提到 《Spark:Yarn-cluster和Yarn-client区别与联系》

下面几张截图是分别运行两种模式时候的结果。
Yarn-cluster模式:





Yarn-client模式:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值