文档首页/ MapReduce服务 MRS/ 故障排除/ 使用Spark/ Spark Streaming任务提交问题
更新时间:2024-12-09 GMT+08:00

Spark Streaming任务提交问题

问题现象

  • 连接Kafka报类找不到。
  • 连接带Kerberos的Kafka,报认证错误。
  • SparkStreaming任务运行一段时间后开始报TOKEN过期问题。

原因分析

  • 问题1:Spark提交任务默认不会加载kafka的相关包,所以需要在启动命令中增加--jars来指定对应kafka版本的jar包
  • 问题2:连接Kafka无法使用Spark的认证信息,需要将相关的认证使用JVM的参数设置进去。
  • 问题3:Spark默认使用当前客户端的认证信息提交任务,也可以使用代码login的方式。但是这两种认证方式都无法更新任务使用的Token,当提交的时候生成的Token信息过期以后就无法再使用,因此报错。解决办法是使用--keytab和--principal将keytab文件和对应用户带入任务中。

处理步骤

  • 问题1:启动命令中增加--jars来指定对应kafka版本的jar包,一般是在Spark客户端目录/jars/streamingClient(0.8版本Kafka)和Spark客户端目录/jars/streamingClient010(0.10版本Kafka)。
  • 问题2:参考指导文档编辑并运行程序
  • 问题3:使用--keytab和--principal将keytab文件和对应用户带入任务中。如果此处的keytab文件和之前Kafka的jaas.conf中配置的是同一个,则Spark会报一个文件多次上传的问题。解决办法是复制一份keytab文件,使得--files和--keytab上传不同的文件。