springxd 流使用 HDFS-Dataset 保存 avro 数据无法更新 kerberos 票证

springxd stream using HDFS-Dataset to save avro data unable to renew kerberos ticket

我已经创建了一个 springxd 流 ====> source-JMS queue -> Transform-Custom Java Processor (XML to AVRO) -> Sink - HDFS-Dataset.

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

我需要帮助 -

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

在此感谢您的帮助。

谢谢,

这是 spring xd 中的一个众所周知的问题,但没有记录:)。长时间部署并尝试 运行 之后的批处理作业发生了非常相似的事情.. 为什么?因为 hadoopConfiguration 对象将范围强制为单例,并且一旦您将 stream/job 部署到 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

希望对您有所帮助。