spark集群启动之后,spark-submit提交任务,主类找不到

elan3906 2017-08-23 10:09:39
如题。我在远程部署了spark集群。启动spark之后,想submit提交上传的jar包。报错:java.lang.ClassNotFoundException: cluster。我的主类名是:cluster
...全文
4245 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
RivenDong 2019-09-08
  • 打赏
  • 举报
回复
你可以通过.setJars直接提交到远程集群,非常方便调试。
PasPerCon 2019-04-02
  • 打赏
  • 举报
回复
你说的:在打包的时候Name后面填的要跟submit的参数class一样,是什么意思?您打包的方式是命令打包还是用Artifact打包?我也遇到了同样的问题,可以详细说一下吗?谢谢!!!
elan3906 2017-08-27
  • 打赏
  • 举报
回复
搞出来了。在打包的时候Name后面填的要跟submit的参数class一样。
LinkSe7en 2017-08-23
  • 打赏
  • 举报
回复
你确定你main方法类名是cluster,而不是像org.mortbay.jetty.Main这样的?
赵4老师 2017-08-23
  • 打赏
  • 举报
回复
JAVA_HOME或CLASSPATH环境变量没设置好?
elan3906 2017-08-23
  • 打赏
  • 举报
回复
master那边其它情况是这样。/etc/profile

spark-env.sh

开发环境IDEA是按照网上方法打jar包的
Spark作业提交到YARN详解:无需本地Hadoop环境的批量入门指南》 在大数据处理领域,Apache Spark因其高效、易用的特点而受到广泛应用。Spark不仅支持独立模式运行,还能与Hadoop YARN(Yet Another Resource Negotiator)相结合,利用YARN的资源调度功能,在大规模集群上运行Spark作业。对于初学者而言,理解如何在没有本地Hadoop环境的情况下,通过Spark提交作业到YARN是至关重要的。本文将详细讲解这一过程。 一、Spark与YARN的结合 Apache Spark自身具备内存计算的优势,而YARN作为Hadoop的资源管理系统,负责集群资源的分配和管理。当Spark运行在YARN上时,YARN会为Spark提供容器(Container),这些容器用于运行Spark任务执行器(Executor)。这种方式使得Spark可以在不直接依赖Hadoop安装的前提下,利用Hadoop集群的计算资源。 二、Spark作业提交方式 Spark作业提交有两种主要方式:1) 通过`spark-submit`命令行工具,2) 在代码中集成`SparkSession`的`sparkContext`提交。对于初学者,使用`spark-submit`是最常见且直观的方式。 三、无需本地Hadoop环境的提交 本地机器上无需安装完整的Hadoop环境,只需要安装Spark,因为Spark自带了对Hadoop的兼容库。只需确保Spark版本与Hadoop版本兼容,即可通过以下步骤进行提交: 1. **配置Spark**:修改`spark-defaults.conf`文件,设置`spark.master`为`yarn`,`spark.submit.deployMode`为`cluster`,以及与Hadoop集群相关的配置,如HDFS的地址等。 2. **打包应用**:将Spark程序及其所有依赖打包成JAR或Uber JAR(fat JAR),包含所有依赖的类库。 3. **提交作业**:使用`spark-submit`命令,指定YARN作为master,输入JAR包路径,以及其他参数,如主类名、资源请求等。例如: ``` spark-submit --class com.example.MainClass --master yarn --deploy-mode cluster --jars /path/to/dependency.jar /path/to/your/app.jar ``` 四、Spark作业生命周期 1. **客户端提交**:客户端通过`spark-submit`向YARN提交作业,包含作业配置和JAR包。 2. **ResourceManager调度**:YARN的ResourceManager接收请求,分配一个ApplicationMaster。 3. **ApplicationMaster启动**:ApplicationMaster在集群中的某个节点上启动,负责申请资源并协调任务执行。 4. **Executor分配**:ApplicationMaster向ResourceManager申请Executor容器,Executor在Worker节点上启动。 5. **任务执行**:Executor接收并执行由Driver分发的任务。 6. **结果返回**:Executor将结果返回给Driver,Driver再将结果写入存储系统或者返回给用户。 7. **资源释放**:作业完成后,ApplicationMaster通知ResourceManager释放所有资源。 五、注意事项 1. **网络通信**:确保客户端与YARN集群之间的网络畅通,否则提交可能失败。 2. **兼容性**:Spark与Hadoop版本需兼容,否则可能会出现ClassNotFound等问题。 3. **资源申请**:合理设置Executor的数量和内存大小,避免资源浪费或申请失败。 4. **日志追踪**:YARN提供了Web UI来监控作业状态,可通过Application ID查看详细日志。 通过以上步骤和注意事项,即使在没有本地Hadoop环境的情况下,也能成功地将Spark作业提交到YARN集群进行处理。这种方式不仅简化了环境配置,还方便了开发者在不同环境下的作业部署。

1,274

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧