spark-submit local本地运行问题

博主在使用spark-submit运行本地(local)模式时遇到问题,原本应写入Linux目录的输出结果意外写入了HDFS。在其他slave节点上运行local模式则正常。问题在于目录指定与实际写入路径不一致,删除HDFS目录后,输出仍不在Linux目录,而是在HDFS。检查代码和配置后,发现其他slave节点能够正确执行并将结果写入Linux目录。

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

求大神解答,或者我们来讨论下!今天碰到一个很奇怪的问题,关于spark-submit 三种运行模式:

(1)本地local模式

(2)在Hadoop YARN-client模式

(3)Standalone Cluster模式

  1  问题描述

      首先说明一下我的集群,一个master节点和两个slave节点,slave1和slave2。

       我一直在master节点上练习spark-submit三种模式。运行的列子就是统计单词的个数。

       首先我运行的spark-submit的local模式,可以成功,并且成功的写入了Linux下制定的输出目录,然后在Hadoop YARN-client模式下运行,成功的写入了HDFS目录下,最后在Stand alone Cluster模式下也成功运行,但是问题来了,我再次在master节点上运行本地模式输出的结果写到了HDFS下我明明制定了本地运行模式而且代码里写的输出路径为Linux路径不是HDFS路径,

### 使用 `spark-submit` 运行 Spark 应用程序 #### 提交应用程序至集群 为了在Spark集群上运行应用程序,可以利用位于Spark安装目录下的`spark-submit`脚本[^3]。此工具不仅简化了向不同类型的集群管理器提交作业的过程,还提供了通过一致的方式处理各种环境的需求。 #### 命令结构 基本命令格式如下所示: ```bash ./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \ --conf <key>=<value> \ ... # other options <application-jar> \ [application-arguments] ``` 其中, - `<main-class>` 是指定了包含`main()`函数的应用入口类名; - `<master-url>` 定义了要连接的Master节点URL(例如:local, spark://host:port, mesos://host:port, yarn等); - `<deploy-mode>` 可选参数指定部署模式为client或者cluster,默认是client模式,在这种情况下driver将在本地启动并由客户端进程控制;而在cluster模式下,则会在工作节点之一上创建一个新的JVM来作为Driver Program执行上下文; - `[application-arguments]` 表示传递给应用本身的额外参数列表。 #### 配置选项 除了上述必填项外,还可以设置一系列配置属性以优化性能或调整行为特性。这些可以通过`--conf key=value`的形式添加到命令行中去。比如内存分配、资源请求量以及日志级别等等都可以在此处定义。 #### 实际案例演示 假设有一个名为`example.jar`打包好的Scala/Java项目文件,并希望将其发送到YARN集群上去执行,那么完整的调用方式可能是这样的: ```bash $SPARK_HOME/bin/spark-submit \ --class org.example.MyApp \ --master yarn \ --deploy-mode cluster \ --executor-memory 2G \ --num-executors 50 \ example.jar arg1 arg2 ``` 这里设置了Executor使用的最大堆空间大小(`--executor-memory`)和期望获得的工作线程数量(`--num-executors`),同时也指明了两个自定义参数`arg1`, `arg2`. #### 工作流解析 当发出以上指令之后,将会触发一系列内部操作,包括但不限于构建必要的classpath、准备运行时环境变量、初始化ClassLoader实例化所需对象直至最终调用`runMain`方法完成整个过程[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值