使用HDFS-Dataset保存avro数据的springxd流无法续订kerberos票证

时间:2017-06-21 18:31:07

标签: jms hdfs kerberos spring-xd

我创建了一个springxd流====> source-JMS队列 - >转换自定义Java处理器(XML到AVRO) - >接收器 - HDFS-Dataset。

Stream工作正常,但24小时后,由于连续连接,它无法续订kerberos身份验证票并停止写入HDFS。我们正在重新启动部署此流的容器,但我们仍然遇到问题并丢失消息,因为它们甚至没有发送到redis错误队列。

我需要帮助 -

  1. 如果我们可以更新流的kerberos票。我是否需要更新接收器代码并需要创建自定义接收器。
  2. 我在springxd文档中找不到类似于HDFS-Dataset的任何接收器,并写入我不需要通过kerberos身份验证的本地文件系统。
  3. 在此感谢您的帮助。

    谢谢,

1 个答案:

答案 0 :(得分:0)

这是spring xd中一个众所周知的问题,没有记录:)。与批处理作业发生了类似的事情,这些作业长时间部署并尝试稍后运行。为什么?因为hadoopConfiguration对象将范围强制为单例,并且在spring-xd中部署流/作业后它将被实例化。在我们的例子中,我们为spring批处理作业创建了一个监听器,以便在执行作业之前更新票证。你可以在你的溪流中做类似的事情,就像指南一样

https://github.com/spring-projects/spring-hadoop/blob/master/spring-hadoop-core/src/main/java/org/springframework/data/hadoop/configuration/ConfigurationFactoryBean.java

我希望它有所帮助。