spark on yarn idea错误: 找不到或无法加载主类org.apache.spark.deploy.yarn.ExecutorLauncher

当使用IntelliJ IDEA尝试远程提交Spark应用到YARN时,遇到找不到或无法加载主类org.apache.spark.deploy.yarn.ExecutorLauncher的错误。通过在SparkConf中设置'spark.yarn.jars'属性,指定jar包名称和依赖路径,成功解决了这个问题。尽管后续仍有其他错误,但主要的类加载问题已得到解决。

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

  • spark on yarn idea远程提交报错,查看8088日志发现

  • 设置sparkconf的"spark.yarn.jars"属性后解决第一个为你的jar包名称,第二个为spark依赖的jar包目录

.set("spark.yarn.jars", "C:\\Users\\han\\Desktop\\test\\dns_project\\target\\dns_project.jar,hdfs://dsy:9000/spark-yarn/jars/*.jar")

重新运行后成功解决,虽然报了其他错... 但总算找到了类

### 配置 IntelliJ IDEA 连接 Spark on YARN 要在 IntelliJ IDEA 中配置并连接到 Spark on YARN 集群,可以按照以下方式操作: #### 1. 创建 Maven SBT 项目 在 IntelliJ IDEA 中创建一个新的 Maven SBT 项目,并确保引入必要的依赖项。以下是 Maven `pom.xml` 文件的一个示例配置[^1]: ```xml <dependencies> <!-- Spark Core --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.3.0</version> </dependency> <!-- Spark SQL --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.3.0</version> </dependency> <!-- Hadoop Client (如果需要) --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.3.1</version> </dependency> </dependencies> ``` #### 2. 设置 SparkSession 和 Master URL 当编写 Spark 应用程序时,在初始化 `SparkSession` `SparkContext` 时需指定 `--master yarn` 参数来表明应用程序将在 YARN 上运行。 下面是一个简单的 Java 示例代码用于设置 SparkSession 并提交至 YARN[^5]: ```java import org.apache.spark.sql.SparkSession; public class WordCount { public static void main(String[] args) { String appName = "Word Count"; String masterUrl = "yarn"; // 使用 YARN 作为资源管理器 // 初始化 SparkSession SparkSession spark = SparkSession.builder() .appName(appName) .master(masterUrl) .config("spark.submit.deployMode", "client") // 客户端模式 .getOrCreate(); try { System.out.println("Application started..."); // 执行一些逻辑... spark.read().textFile(args[0]).show(); // 假设输入文件路径通过命令行参数传递 } finally { spark.stop(); } } } ``` 注意:为了防止 DNS 解析问题,建议显式地将本地 IP 地址绑定给 Spark Driver 节点。可以通过如下方式进行配置: ```java .config("spark.driver.host", "<your-local-ip>") .config("spark.driver.bindAddress", "<your-local-ip>") ``` #### 3. 构建可执行 JAR 文件 构建包含所有依赖关系的 fat jar(uber-jar)。这通常通过 Maven 的 Shade 插件完成。编辑 `pom.xml` 添加插件定义[^2]: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 完成后运行以下命令生成 jar 文件: ```bash mvn clean package ``` #### 4. 提交作业到 YARN 使用 `spark-submit` 工具向 YARN 提交任务。假设已经生成了一个名为 `my-spark-app.jar` 的 jar 文件,则可以按以下格式调用[^4]: ```bash bin/spark-submit \ --class com.example.MainClass \ --master yarn \ --deploy-mode cluster/client \ /path/to/my-spark-app.jar input_path output_path ``` 其中: - `com.example.MainClass`: 名; - `/path/to/my-spark-app.jar`: 刚才打包好的 jar 文件位置; - `input_path`, `output_path`: 输入输出数据所在的 HDFS 路径; #### 5. 测试和调试 测试过程中可能会遇到权限不足其他错误情况,请确认集群上的环境变量以及安全策略是否允许外部访问[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值