Spark-submit提交任务到集群

本文介绍了如何使用IntelliJ IDEA进行Spark项目打包,并通过`spark-submit`命令将任务提交到Spark集群,最后展示了运行结果。

1 IDEA 打包

示例代码参考AMPCamp2015之SparkSQL,开发环境使用idea。首先需要将程序打包成jar


选择project structure --》artifacts ,由于集群已经有了运行依赖的jar包,打包时可以将这些jar包排除出去,以减小打包后的jar包的大小。


点击ok,然后选择build --》build artifacts,SparkSQLTest --》build,然后在工程目录的子目录下会生成j对应的jar文件:


2 提交任务

首先启动集群,然后客户端来到spark-submit目录:/app/hadoop/spark131/bin


spark-submit通过命令行的方式提交任务,具体参数信息如下参考


提交示例如下:


在命令行输入如下命令:
./spark-submit  --class SparkSQLTest --master spark:hadoop1:7077 --executor-memory 2g --num-executors 3  /home/kaiseu/MyProject/IdeaProjects/SparkProject/Saprk131/out/artifacts/SparkSQLTest_jar/SparkSQLTest.jar



在web监控界面可以看到:


3 运行结果

结果如下:




spark-submit 是 Apache Spark 提供的用于提交 Spark 应用程序集群命令行工具,基本语法为:spark-submit [options] <app-jar> [app-arguments] [^3]。 在 Linux 环境下,可通过”spark-submit —help”命令来了解 spark-submit 指令的各种参数说明,在终端窗口下,执行如下的命令,来查看 spark-submit 的帮助信息:$ spark-submit --help [^1]。 常用参数说明如下: - **应用程序配置**: - `--class <class-name>`:指定应用程序的主类(对于 Java/Scala 程序)。 - `--name <app-name>`:设置应用程序名称。 - `--jars <jars>`:添加额外的 JAR 文件到 classpath(逗号分隔)。 - `--py-files <files>`:为 Python 应用添加额外的文件(.zip, .egg, .py)。 - `--files <files>`:将文件上传到执行器工作目录(逗号分隔)。 - `--conf <key>=<value>`:设置任意 Spark 配置属性 [^3]。 - **资源分配**: - `--driver-memory <memory>`:设置 Driver 进程内存(如 1g)。 - `--executor-memory <memory>`:设置每个 Executor 进程内存(如 1g)。 - `--executor-cores <num>`:设置每个 Executor 使用的核心数。 - `--num-executors <num>`:设置要启动的 Executor 数量。 - `--total-executor-cores <num>`:设置所有 Executor 使用的总核心数 [^3]。 Spark 支持三种集群管理方式: - Standalone:Spark 自带的一种集群管理方式,易于构建集群- Apache Mesos:通用的集群管理,可以在其上运行 Hadoop MapReduce 和一些服务应用。 - Hadoop YARN:Hadoop2 中的资源管理器 [^2]。 当在集群运行程序时,不需要在程序中硬编码 master 参数,而是使用 spark-submit 提交应用程序并将 master 的 URL 以脚本参数的形式传入。例如: ``` /software/spark-3.1.2-bin-hadoop2.7/bin/spark-submit --class application.Application --master spark://hadoop01:7077 /software/spark-3.1.2-bin-hadoop2.7/jars/EcommerceAnalysis-1.0-SNAPSHOT.jar 10 ``` 不过,对于本地测试和单元测试,可以通过“local[*]”来运行 Spark 程序(需确保本地系统中的 cpu 核心数够用) [^5]。 使用 spark-submit 提交任务时,所有配置都可以通过 command 设置,若图方便或者想从外部配置文件导入配置,也可使用相关函数添加配置。例如 AppName 和一些外部数据源的配置参数: ```java SparkConf sparkConf = new SparkConf().setAppName("TestSQL01"); sparkConf.set("es.index.auto.create","true"); //在spark中自动创建es中的索引 sparkConf.set("es.nodes","保密"); //设置在spark中连接es的url和端口 sparkConf.set("es.port","9200"); sparkConf.set("es.nodes.wan.only","true"); JavaSparkContext sc = new JavaSparkContext(sparkConf); SQLContext sql = new SQLContext(sc); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值