kafka和storm集成
我将在此处描述Storm和Kafka集成模块的一些细节,一些您应该意识到的重要错误以及如何克服其中的一些错误(尤其是对于生产安装)。
我在生产安装中大量使用Apache Storm,并将Kafka作为主要输入源(Spout)。
使用Kafka和版本的Storm集成模块:
- Storm 0.x通过现有模块storm-kafka支持Kafka 0.8.x
- Storm 1.0.x通过新模块storm-kafka-client支持Kafka 0.9.x
- Storm 1.x通过新模块storm-kafka-client支持Kafka 0.10.x
最近,我将Storm 1.0.3 (从0.9.6)升级到Kafka 0.9.0.1 (从0.8.2.2)。
不幸的是,Storm 1.0.3有两个主要的错误 ,您必须解决这些错误才能在生产环境中使用它。
主要错误(与Kafka相关):
- “如果在运行元组时重新分配分区,则新的Kafka喷嘴会崩溃[ JIRA-2104 ]在1.0.x分支中已解决( Pull-1980 )
- “ Storm-kafka-client:不总是重放失败的元组” [ JIRA-2087 ]在1.x分支中已解决( Pull-1826 )
当开始从Storm 0.9.6到1.0.3的迁移过程时,我遇到了上述错误。 在强调我的拓扑时,各种事情开始不起作用,或者看到停滞不前的Workers停止处理数据。
在阅读了许多日志并进行了许多测试之后,我们终于了解了该问题(KafkaSpout错误)。 我们暂停了迁移过程,并希望解决这些问题。
幸运的是,Storm提交者已经修复了这些错误,因此已经提供了解决方案。 非常感谢Storm社区!!!
为了解决这些问题,我将这两个修复程序移植到了“ storm-kafka-client ”的派生版本中,并发布了具有新maven版本( 1.0.3- <custom> 1.0 )的新自定义模块。 然后,我仅在项目中引用新的自定义版本。
之后,我们再次开始压力测试,一切都按预期进行。
请注意,错误“ 2087”仅在1.x分支中已修复,但将其移植到1.0.3版本非常容易。
幸运的是,几天前发布了Storm 1.1.0 。 此版本已经修复了这些错误以及许多其他错误。 我尚未进行测试,但是我会尽快尝试。
当我将这些修复移植回1.0.3版本时,没有Storm 1.1.0版本。
如果您打算使用Storm 1.0.3发行版,则必须注意该发行版的一些其他错误,您可能需要在“ custom ”发行版中对其进行修复:
- “ Kafka中断可能导致拓扑锁定” [ STORM-2440 ] [ FIX ]
- “ ReportErrorAndDie并不总是消亡” [ STORM-2194 ] [ 修复 ]
- “在捕获InterruptedException后,Utils.sleep方法未设置中断标志” [ STORM-2396 ] [ 修复 ]
- “即使topology.eventlogger.executors = 0,事件记录器螺栓也会实例化” [ STORM-2389 ] [ 修复 ]
- “故障恢复Blob删除在BlobSynchronizer.syncBlobs中也失败” [ STORM-2386 ] [ FIX ](与Nimbus HA有关)
- “ Storm-HDFS的listFilesByModificationTime已损坏” [ STORM-2350 ] [ 修复 ]
- “ ReadClusterState的ProfileAction处理映射中的类型不匹配” [ STORM-2345 ] [ FIX ]
上述大多数错误(2440和2194除外)已在Storm 1.1.0版本中解决。 新版本包含您可能感兴趣的新功能(流式SQL,Druid和OpenTSB集成等)。
最好的祝福,
阿德里安斯·达迪斯(Adrianos Dadis)。
真正的民主需要免费软件
翻译自: https://www.javacodegeeks.com/2017/04/important-production-bugs-fixes-storm-kafka-integration.html
kafka和storm集成