打包Spark程序并上传到集群

本文介绍了如何配置Spark、Scala、Hadoop环境,使用IDEA创建Scala工程,添加Spark依赖,编写WordCount实例,打包成jar,并在Spark集群上运行。关键步骤包括匹配版本、构建sbt项目、添加依赖、打包jar以及启动和提交Spark作业。
  • 前期准备

配置JDK,Scala,Hadoop,Spark运行环境,安装IDEA。

PS:注意spark、Scala、Hadoop之间的版本对应关系,否则可能会报错。

  • 在IDEA中用sbt构建Scala工程

IDEA中点击File->new->Project

之后填写项目名称,存储路径,选择JDK版本,Sbt版本,Scala版本

 

其中Scala版本必须与Spark编译使用的版本一致,可以通过Spark官网查询Scala版本

构建完成后的目录如下

### 将 IDEA 开发的程序打包部署到 Yarn 集群的方法 在将使用 IDEA 开发的程序打包部署到 Yarn 集群运行时,需要完成以下关键步骤:配置 Maven 项目、打包程序、上传程序到 HDFS 通过 `spark-submit` 或 `hadoop jar` 命令提交任务。 #### 1. 配置 Maven 项目 为了确保程序能够正确打包为包含所有依赖的 JAR 文件,需要在项目的 `pom.xml` 文件中添加适当的插件配置。以下是推荐的 `maven-assembly-plugin` 配置示例[^3]: ```xml <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 上述配置确保了在执行 `mvn package` 命令时会生成一个包含所有依赖的 JAR 文件。 #### 2. 打包程序 在 IDEA 中执行以下操作以完成程序打包: - 删除旧的 `target` 目录以避免残留文件干扰[^3]。 - 在终端中运行以下命令以生成 JAR 文件: ```bash mvn clean package -DskipTests ``` 该命令会清理旧的构建文件重新打包程序,同时跳过测试以加快打包速度。 #### 3. 上传 JAR 文件到 HDFS 将生成的 JAR 文件(通常位于 `target` 目录下)上传到 HDFS 的指定路径。例如: ```bash hdfs dfs -put /path/to/your-jar-file.jar /hdfs/path/ ``` #### 4. 提交任务到 Yarn 集群 根据程序类型选择合适的提交方式: - **Spark 程序**: 使用 `spark-submit` 命令提交 Spark 程序到 Yarn 集群运行。例如: ```bash bin/spark-submit \ --class your.main.Class \ --master yarn \ --deploy-mode cluster \ /path/to/your-jar-file.jar ``` 如果需要传递参数,可以在 JAR 文件路径后附加参数[^1]。 - **MapReduce 程序**: 使用 `hadoop jar` 命令提交 MapReduce 程序到 Yarn 集群运行。例如: ```bash bin/hadoop jar /path/to/your-jar-file.jar your.main.Class input_path output_path ``` 其中 `input_path` 和 `output_path` 是 HDFS 上的输入和输出路径[^2]。 #### 5. 查看日志 在集群上运行任务时,可以通过日志工具类收集任务运行日志。例如,参考提供的 `InputStreamReaderRunnable` 类实现日志读取功能[^4]。 --- ### 注意事项 - 确保集群环境已正确配置 Spark 或 Hadoop。 - 在提交任务前,验证 JAR 文件是否包含所有必要的依赖项。 - 检查 HDFS 上的输入路径是否存在且数据格式正确。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值