IDEA中直接提交Spark任务

    记录下如何在Widows下的IDEA中直接提交Spark on yarn任务。由于项目使用的是Spring Boot,这里提交任务指的是在IDEA中启动Spring Boot工程,然后发送一个Rest请求,触发Spark on yarn程序的运行。启动一个Spring Boot工程挺快的,引用两个jar包就搞定了。

 

正常流程:

1.配置Hadoop环境变量

详见“参考一”或者下载附件即可,放到电脑上然后配置下环境变量,个人使用的Hadoop版本是2.6.0-cdh5.7.x。

IDEA中直接提交Spark任务_第1张图片

 

IDEA中直接提交Spark任务_第2张图片

 

IDEA中直接提交Spark任务_第3张图片

 

2.Service层编写程序

在Service层new 一个SparkContext,运行完毕之后将该SparkContext关闭

 

3. 将工程打包,得到程序依赖的jar包,将这些jar包压缩成ZIP文件,上传到HDFS某一目录下

.set("spark.yarn.archive"," hdfs://IP:Port/***.zip")

不要使用spark.yarn.jars,一个个jar包都要加载,速度没有这个快

 

4.发送rest请求,触发Service层 Spark On Yarn任务的提交

 

5.如果想修改提交到Yarn上的“User”名

在代码中使用System.setProperty("HADOOP_USER_NAME", "root")将提交的用户设置成root是无效的,可以在IDEA中配置环境变量:

IDEA中直接提交Spark任务_第4张图片

这样提交到Yarn队列中的用户名就会变成root了。

 

异常情况说明:

1. 错误提示:createTaskScheduler org.apache.spark.SparkException: Could not parse Master URL ‘yarn’

    工程中没有引用spark-yarn jar包,pom文件中引入依赖即可

 

 

2. Yarn报错,AM的Container退出

IDEA中直接提交Spark任务_第5张图片

AM是程序一启动就退出了,所以从界面上看不到详细的错误信息,只能使用Yarn命令来看日志了:

IDEA中直接提交Spark任务_第6张图片

还是jar包问题,工程中引入spark-yarn jar包之后,忘记将jar包上传到HDFS目录下。

 

3. Yarn报错,服务端无法连接本地IDEA

IDEA中直接提交Spark任务_第7张图片

公司网络的问题了…服务器和客户端要在同一个网段,然后配置好host名

 

最终,换了一台可以直接通信的服务器,将任务成功提交到了Yarn上

 

 

 

 

参考:

    https://www.cnblogs.com/honey01/p/8027193.html( Windows下Hadoop环境变量配置)

 

 

你可能感兴趣的:(Spark学习)