spark提交作业的参数

spark-submit  \
--master yarn \    指定作业运行的资源调度方式
--py-files  'xxx.zip'
--conf spark.pyspark.python=/opt/installs/anaconda3/bin/python3 \
--conf spark.pyspark.driver.python=/opt/installs/anaconda3/bin/python3 \
--deploy-mode client            \ 部署模式, driver启动位置 可选的参数值:client、cluster
--driver-memory    1G           \ driver驱动器的内存,默认是1g
--driver-cores     1            \ driver驱动器cpu核心数,默认1
--num-executors    2            \ executor执行器的数量,默认是2
--executor-memory  2G           \ 执行器的内存带下,默认是2g
--executor-cores   2            \ 执行器的核心数
--queue            yarn队列名称  \ 队列

--py-files配置参数

35_测试.py文件

from pyspark import SparkContext, SparkConf
from util import str_util

if __name__ == '__main__':

    conf = SparkConf().setAppName("测试")
    sc = SparkContext(conf=conf)
    sc.setLogLevel("WARN")  

    rdd1 = sc.parallelize([1,2,3,4,5,6,7,8,9,10],2)
    rdd2 = rdd1.map(lambda v:str_util.to_str_prefix(v))
    list1 = rdd2.collect()
    for i in list1:
        print(i)

    sc.stop()

 util包下的str_util.py文件

def to_str_prefix(v):
    return '_'+str(v)

 

 在linux上跑yarn任务   

spark-submit --master yarn 35_测试.py

报错: No module named 'util'

解决方案:

将在windows系统上测代码压缩为zip上传至linux系统上,或者将util文件夹在linux上使用zip命令进行压缩

1. yum install zip

2. zip -r util.zip util

3. spark-submit --master yarn --py-files '/opt/sparkcode/util.zip' 35_测试.py #可以写相对或者绝对路径

--deploy-mode配置参数

spark-submit --master  yarn --deploy-mode cluster --py-files '/opt/sparkcode/util.zip'  35_测试.py

--queue参数配置

 

spark-submit --master yarn --deploy-mode cluster --py-files '/opt/sparkcode/util.zip' --queue hive 35_测试.py

### 如何将 Spark 作业提交到集群 #### 使用 Shell 脚本提交 Spark 作业 通常情况下,可以通过 `$SPARK_HOME/bin/spark-submit` 命令来向 Spark 集群或 Hadoop/YARN 提交 Spark 作业。此命令允许指定诸如主类、JAR 文件路径以及资源配置等参数[^1]。 ```bash spark-submit \ --class com.example.SparkApp \ --master yarn \ --deploy-mode cluster \ --driver-memory 4g \ --executor-memory 2g \ --executor-cores 1 \ /path/to/application.jar \ arg1 arg2 ``` 上述脚本展示了如何通过 `spark-submit` 向 YARN 提交一个 Spark 应用程序实例。这里指定了应用的入口类 (`com.example.SparkApp`) 和 JAR 文件的位置 (`/path/to/application.jar`) ,同时也设置了驱动程序内存大小为 4GB,执行器内存为 2GB 并且每个执行器核心数设为了 1 。最后还传递了一些额外的应用参数给应用程序本身[^5]。 #### 从 Java 代码中提交 Spark 作业至 YARN 对于希望直接从 Java 或者其他 JVM 编程语言编写的程序内启动并提交 Spark 任务的情况,则可以利用 YARN 的客户端 API 来实现这一点。具体来说就是创建一个新的 YARN 客户端对象并通过它调用相应的方法完成配置设置与最终的任务提交过程[^2]。 下面是一个简单的例子展示怎样使用 YARN 的 Client 类来进行操作: ```java import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.client.api.YarnClient; public class SparkJobSubmitter { public static void main(String[] args) throws Exception { // 初始化YARN客户端 final YarnClient client = YarnClient.createYarnClient(); client.init(new Configuration()); client.start(); // 设置应用程序ID和其他必要的属性... ApplicationId appId = ...; // 获取或生成application ID // 构建容器启动上下文... ContainerLaunchContext clc = ... ;// 创建container launch context // 将构建好的context传入client.run()方法中去真正发起请求 client.submitApplication(clc); // 关闭连接 client.stop(); } } ``` 这段代码片段说明了如何初始化 YARN 客户端,并准备用于启动新应用程序所需的信息(如 application ID),之后再把这些信息打包成 container launch context 对象形式交给 `submitApplication()` 函数处理以触发实际的工作流提交动作。 #### Spark Job 提交流程解析 当通过 `spark-submit` 工具或者其他方式提交 Spark 作业时,在后台会经历一系列复杂的交互步骤。这些步骤包括但不限于加载环境变量、解析命令行选项、建立与 ResourceManager 的通信链接等等。整个过程中涉及到多个组件之间的协作,比如 Main 类负责整体协调工作;SparkSubmitCommandBuilder 则参与到了具体的命令构造环节之中;而 OptionParser 可能会被用来解析来自用户的输入参数列表[^3]。 #### 控制资源分配策略 除了掌握基本的提交机制外,理解 Spark 中关于资源管理和调度方面的概念同样重要。这不仅涉及到了不同应用程序之间共享物理硬件资源的方式——即所谓的“跨应用程序”的层面——还包括同一 Spark 上下文中并发运行着多项计算任务时内部是如何动态调整可用资源配额的问题。这种灵活性使得开发者可以根据实际情况灵活调配计算能力,从而提高系统的吞吐量和响应速度[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值