IntelliJ IDEA环境中打包+上传主机,spark-submit提交执行

IntelliJ IDEA 打包与 Spark 提交教程
本文详细介绍了如何使用 IntelliJ IDEA 对 Scala 项目进行打包,并通过 spark-submit 命令在本地环境中运行。从配置 Artifact 到添加依赖 Jar 包,再到执行命令,一步步引导读者完成整个过程。

1、IntelliJ IDEA打包

打包操作流程:

选择"File"——>"Project Structure"命令,然后选择"Artifact",单击"+"按钮,选择

"Jar"——>"From Modules with dependencies",如图所示,单击"OK"


在下图中选择主函数


在下图界面中选择需要添加的Jar包,我在打包的时候添加了scala.sdk,跟spark的Jar包,至于,不添加,是否能够执行,有兴趣的童鞋

可以试试

在主菜单中选择"Build"——>"Build Artifact"命令,编译生成Jar包

然后去工作区间的out文件夹中找到jar文件,上传到主机

2、spark-submit执行

./spark-submit --master local[*] --jars /home/songsf/spark/sp*/lib/spark-assembly-1.3.0-hadoop2.4.0.jar --class lesson01.Test /home/songsf/java/scala_learn.jar

执行此命令,首先要cd 到bin目录下,也可以通过添加路径的方式执行,–master local[*]指定主机位置为本地,因为我们只有一台主机,属于伪分布式,所以采用local

--class 指定jar保重的主函数      --jars 指定所依赖的jar包



<think>嗯,用户之前已经问过在Hadoop YARN集群中使用MapReduce统计词频的问题,现在又提到在IntelliJ IDEA打包词频程序,上传到HDFS,然后通过xftp传到本地路径,再用spark-submit提交到集群。接下来该怎么做呢? 首先,用户可能已经完成了代码的开发和打包,现在需要部署到Spark集群运行。我需要确认用户的具体步骤是否正确,指导后续操作。用户可能混淆了HDFS和本地路径的上传步骤,需要理清流程。 用户提到用xftp上传到本地路径,可能是指将打包的JAR文件从本地机器上传到集群的某个节点,然后在该节点上执行spark-submit命令。这里需要注意,Spark作业提交通常是从集群的一个节点(比如边缘节点或客户端节点)提交,而不是直接通过HDFS运行。 接下来,用户需要正确使用spark-submit命令,指定主节点URL、应用名称、类路径等参数。同时,要确保输入和输出路径正确指向HDFS的位置,而不是本地文件系统。可能还需要处理依赖项,比如--jars参数或--packages。 另外,用户可能需要查看作业的运行状态和日志,使用YARN的Web UI或Spark History Server来监控应用。如果作业失败,需要指导用户如何查看日志进行调试。 还要注意,用户之前使用的是Hadoop的MapReduce示例,现在转向Spark,可能需要提醒Spark和MapReduce在处理上的不同,比如RDD的使用和API的区别。同时,确保Spark集群配置正确,资源分配合理,避免内存不足等问题。 总结步骤应该是:确认打包正确,提交Spark作业,指定正确的输入输出路径,监控作业状态,最后验证输出结果。需要详细说明每个步骤的命令和参数,以及可能遇到的错误和解决方法。</think>在IntelliJ IDEA中完成词频统计程序打包通过Spark提交到集群后,按以下步骤操作: --- ### **一、环境验证** 1. 检查Spark集群状态 ```bash # 查看YARN节点状态 yarn node -list # 确认Spark配置指向集群 cat $SPARK_HOME/conf/spark-defaults.conf | grep master ``` --- ### **二、提交Spark作业** 1. **基础提交命令**(假设JAR包为`wordcount.jar`,主类`WordCount`) ```bash spark-submit \ --master yarn \ --deploy-mode cluster \ --class WordCount \ /本地路径/wordcount.jar \ hdfs://namenode:8020/输入路径 \ hdfs://namenode:8020/输出路径 ``` $$注意:输出目录必须不存在$$ 2. **参数详解** - `--executor-memory 4g`:设置Executor内存 - `--num-executors 6`:指定Executor数量 - `--conf spark.sql.shuffle.partitions=200`:调整shuffle分区 --- ### **三、执行过程监控** 1. **实时日志查看** ```bash yarn logs -applicationId <Application_ID> -log_files stdout ``` 2. **Web UI访问** - **YARN界面**:`http://<ResourceManager_IP>:8088` - **Spark界面**:`http://<Driver_IP>:4040`(任务运行期间有效) --- ### **四、结果验证** 1. **直接查看HDFS输出** ```bash hdfs dfs -cat /输出路径/part-* ``` 2. **下载到本地查看** ```bash hdfs dfs -getmerge /输出路径 local_result.txt cat local_result.txt | head -n 20 ``` --- ### **五、常见问题处理** #### **1. ClassNotFound异常** **现象**:`java.lang.ClassNotFoundException: WordCount` **解决**: ```bash # 在spark-submit中添加包含主类的JAR spark-submit --jars /path/to/your_main.jar ... ``` #### **2. 输出目录已存在** **现象**:`org.apache.hadoop.mapred.FileAlreadyExistsException` **解决**: ```bash hdfs dfs -rm -r /输出路径 ``` #### **3. 内存不足** **现象**:`Container killed by YARN for exceeding memory limits` **调整参数**: ```bash spark-submit \ --executor-memory 8g \ --driver-memory 4g \ ... ``` --- ### **六、进阶操作** 1. **动态资源分配** ```bash spark-submit \ --conf spark.dynamicAllocation.enabled=true \ --conf spark.shuffle.service.enabled=true \ ... ``` 2. **使用第三方依赖** ```bash spark-submit \ --packages org.apache.spark:spark-avro_2.12:3.3.0 \ ... ``` --- ### **关键路径示意图** $$ \begin{aligned} &\text{IDEA打包} \rightarrow \text{Xftp传输到集群节点} \\ &\downarrow \\ &\text{spark-submit} \rightarrow \text{YARN资源分配} \\ &\downarrow \\ &\text{Spark Executors分布式计算} \rightarrow \text{HDFS结果存储} \end{aligned} $$ --- ### **操作建议** 1. **测试阶段**先使用`--deploy-mode client`模式便于调试 2. 生产环境建议将JAR包直接存放在HDFS: ```bash hdfs dfs -put wordcount.jar /spark_jobs/ ``` 提交时使用HDFS路径: ```bash spark-submit --master yarn hdfs:///spark_jobs/wordcount.jar ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值