Spark支持以下三种部署模式
- Client模式:在Client模式下,驱动程序运行在提交应用程序的客户端上。应用程序使用集群中的资源来执行任务。 这种模式适用于开发和调试应用程序,因为它允许开发人员与驱动程序交互并查看应用程序的输出。
- Cluster模式:在Cluster模式下,驱动程序运行在集群上的某个节点上。 应用程序使用集群中的资源来执行任务。这种模式适用于生产环境,因为它可以更好地利用集群中的资源。
- Local模式:在Local模式下,应用程序运行在单个计算机上。 这种模式适用于开发和测试应用程序,因为它可以在没有集群的情况下运行应用程序。
使用deploy-mode选项可以指定要使用的部署模式。
例如,使用–deploy-mode client选项可以将应用程序部署在Client模式下,而使用–deploy-mode cluster选项可以将应用程序部署在Cluster模式下。
参数解释
Spark有两种部署模式:Standalone和YARN。
以下是这两种部署模式中常见的Spark运行参数:
- master:指定Standalone或YARN的主节点地址,例如–master yarn或–master spark://localhost:7077。
- –queue 在 YARN 集群中,使用 --queue 参数可以指定任务要运行的队列。这个参数通常用于控制任务的优先级和资源分配。如果没有指定队列,默认会将任务分配到 default 队列中。
- deploy-mode:用于指定应用程序的部署模式。在Standalone中,可以选择client或cluster;在YARN中,可以选择client或cluster或其他。 例如,–deploy-mode cluster表示将应用程序提交到集群上运行。
- num-executors:指定要启动的执行器数,例如–num-executors 4表示启动4个执行器。
- executor-memory:指定每个执行器可用的内存量,例如–executor-memory 2g表示每个执行器可用2GB内存。
- driver-memory:指定驱动器可用的内存量,例如–driver-memory 1g表示驱动器可用1GB内存。
- executor-cores:指定每个执行器可用的CPU核心数量,例如–executor-cores 2表示每个执行器可用2个CPU核心。
- jars:指定要在应用程序中使用的JAR包的路径,例如–jars /path/to/jar。
- py-files:指定要在应用程序中使用的Python文件的路径,例如–py-files /path/to/pythonfile.py。
- files:指定要在应用程序中使用的普通文件的路径,例如–files /path/to/file.txt。
- main-class:指定要运行的主类(仅对Java和Scala应用程序有效),例如–class com.example.Main。
- –driver-library-path参数用于指定运行Spark应用程序的驱动程序库的路径。
- –conf: 允许您设置Spark配置属性,例如–conf spark.executor.extraJavaOptions="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps"可以设置执行器的JVM选项。
关于认证相关的参数
在 Spark 部署模式运行时,关于 Kerberos 认证相关的参数包括:
- spark.authenticate:设置为 true 开启 Kerberos 认证,默认为 false。
- spark.principal:Kerberos 认证的主体名称,通常是以用户身份标识。
- spark.keytab:Kerberos 认证的密钥文件路径,用于进行身份验证。 这些参数可以在 Spark 启动命令中通过 --conf 选项指定,例如:
./sbin/start-worker.sh \
--class org.apache.spark.deploy.worker.Worker \
--conf spark.authenticate=true \
--conf [email protected] \
--conf spark.keytab=/path/to/sparkuser.keytab
需要注意的是,使用 Kerberos 认证需要在 Hadoop 集群上进行相关配置,并且需要保证 Spark 和 Hadoop 配置的参数一致。此外,Kerberos 认证在集群环境中会带来额外的开销和复杂性,因此需要谨慎使用。
参数配置思路
Spark 提交运行参数的设计思想是通过命令行参数和配置文件等方式来指定 Spark 应用程序的执行参数,以便更好地满足不同应用场景的需求。Spark 提供了一系列的运行参数,可以控制应用程序的资源分配、并行度、优化等方面的设置,从而提高应用程序的性能和可靠性。同时,Spark 还支持从外部加载配置文件来进行参数设置,使得应用程序的参数可以更灵活地进行配置和管理。通过合理的参数设置,可以提高 Spark 应用程序的效率和可扩展性,使得应用程序能够更好地适应不同的工作负载。
版权归原作者 卢延吉 所有, 如有侵权,请联系我们删除。