kafka和storm集成_Storm和Kafka集成的重要生产错误和修复

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相关):

  1. “如果在运行元组时重新分配分区,则新的Kafka喷嘴会崩溃[ JIRA-2104 ]在1.0.x分支中已解决( Pull-1980 )
  2. “ 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集成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

显微镜自动聚焦原理是什么_什么是共聚焦显微镜?你了解过共聚焦显微镜吗?...

更出色的表面分析ZEISS Smartproof 5产品表面粗糙度质量控制ZEISS Smartproof 5是一款集成式转盘共聚焦显微镜&#xff0c;依托孔径关联技术将传统共聚焦显微镜的高分辨率与转盘系统的高速采集相结合&#xff0c;能够高速、准确地采集表面3D数据。二维测量&#xff1a;距离、高…

java string args_java – 语法“final String … args”是什么意思/做什么?

Java中参数的省略号表示类型的vararg.因此,在您的情况下,…意味着您可以将任意数量的String参数传递给doInBackground方法.因此,您可以调用此方法doInBackground(“String1”,“String2”,“String3”)或doInBackground(“String1”)或doInBackground(“String1”,“String3”,…

Java 程序执行过程的内存流程图(手写稿)

操作系统会分配一定的内存空间给JVM&#xff0c;空间大小可以在JVM里面设置&#xff0c;JVM会将内存分为三个区域&#xff1a;栈、堆、方法区。

unsafe jdk9_JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等

unsafe jdk9Java 9距离&#xff08;希望&#xff09;数月了&#xff0c;现在该回顾一下即将发生的变化以及您应该采取的措施 Java 9即将来临&#xff08;我们正在计算到达的日子 &#xff09;&#xff0c;其中包含一系列新功能和改进功能。 这就是为什么我们决定创建一份清单来…

DAO 学习笔记

文章目录什么是 DAO?如何写 DAO?示例代码什么是 DAO? Data Access Object(DAO)&#xff0c;数据访问对象/数据存取对象。DAO 是封装数据库访问逻辑的组件/类 。 定义一个类&#xff0c;这个类中的方法封装了数据库访问逻辑&#xff0c;要访问数据库时&#xff0c;只要调用…

dc/os_DC / OS中具有Java和数据库应用程序的服务发现

dc/os该博客将展示一个简单的Java应用程序如何使用DC / OS中的服务发现与数据库进行对话。 为什么要进行服务发现&#xff1f; 应用程序通常由多个组件组成&#xff0c;例如应用程序服务器&#xff0c;数据库&#xff0c;Web服务器&#xff0c;缓存和消息传递服务器。 通常&am…

python进阶项目设计_Python进阶循环设计

之前在“循环”一节&#xff0c;我们已经讨论了Python最基本的循环语法。这一节&#xff0c;我们将接触更加灵活的循环方式。1. 利用range(), 得到下标在Python中&#xff0c;for循环后的in跟随一个序列的话&#xff0c;循环每次使用的序列元素&#xff0c;而不是序列的下标。之…

python调试器入门教程_PyCharm入门第一步(二)——调试第一个Python应用|python基础教程|python入门|python教程...

https://www.xin3721.com/eschool/pythonxin3721/第2步&#xff1a;调试您的第一个Python应用程序找出问题的根源PyCharm报告运行时错误&#xff1a;a ZeroDivisionError。深入研究一下代码&#xff0c;找出问题所在。这里可以使用PyCharm调试器来查看代码中发生了什么。要开始…

Struts2请求处理的内部流程图/结构图/原理图(版本二)

文章目录请求处理流程图流程说明请求处理流程图 流程说明 第 1 步&#xff1a; 客户端初始化一个指向 Servlet 容器&#xff08;例如 Tomcat&#xff09;的请求&#xff0c;例如&#xff1a;在浏览器中输入 http:localhost:8080/Struts2/helloworld/helloworldAction.action …

jboss 配置上下文路径_为单个Web应用程序配置多个上下文根– JBoss

jboss 配置上下文路径有时&#xff0c;我们通过在jboss-web.xm l中定义一个来对应用程序进行更改&#xff0c;以支持利用JBoss功能的多个上下文根&#xff0c;如下所示&#xff1a; webapp / WEB-INF / jboss-web.xml&#xff1a; <?xml version"1.0" encoding…

xampp mysql 查询很慢_如何开启mysql的慢查询机制

1 在mysql中默认是不会开启慢查询日志功能的&#xff0c;我们可以使用show variables like ‘%slow%‘来查看一下。结果如下&#xff1a;参数说明&#xff1a;log_slow_queries表示服务器端是否开启慢查询日志记录功能&#xff0c;slow_query_log表示mysql监测满查询的功能是否…

python3.7打包exe坑_[求助]入坑学习python 需要装pyinstaller打包成exe

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼E:\Python>pyinstaller -F E:\Python\123.py142 INFO: PyInstaller: 3.2.1142 INFO: Python: 3.5.3142 INFO: Platform: Windows-7-6.1.7601-SP1143 INFO: wrote E:\Python\123.spec144 INFO: UPX is not available.146 INFO: E…

uaa 授权_使用UAA OAuth2授权服务器–客户端和资源

uaa 授权在上一篇文章中&#xff0c;我介绍了如何使用Cloud Foundry UAA项目启动OAuth2授权服务器&#xff0c;以及如何使用OAuth2授权代码流程中涉及的一些参与者来填充它。 我在Digital Ocean网站上发现这篇文章在描述OAuth2授权代码流方面做得很好&#xff0c;因此&#xf…

谈谈Java编程中的拦截器与过滤器的区别

拦截器是基于 Java 反射机制的&#xff0c;而过滤器是基于函数回调的。 过滤器依赖于 Servlet 容器&#xff0c;而拦截器不依赖于 Servlet 容器。 拦截器只能对 Action 请求起作用&#xff0c;而过滤器则可以对几乎所有请求起作用。 拦截器可以访问 Action 上下文、值栈里的…

电影推荐系统 python简书_文章推荐系统 | 十四、推荐中心

在前面的文章中&#xff0c;我们实现了召回和排序&#xff0c;接下来将进入推荐逻辑处理阶段&#xff0c;通常称为推荐中心&#xff0c;推荐中心负责接收应用系统的推荐请求&#xff0c;读取召回和排序的结果并进行调整&#xff0c;最后返回给应用系统。推荐中心的调用流程如下…

获取请求的url java_Java获取此次请求URL以及服务器根路径的方法

一、 获取此次请求的URLString requestUrl request.getScheme() //当前链接使用的协议"://" request.getServerName()//服务器地址 ":" request.getServerPort() //端口号 request.getContextPath() //应用名称&#xff0c;如果应用名称为 request.getS…

java 平台级模块系统_Java平台模块系统公众审查未能通过

java 平台级模块系统在过去的几周里&#xff0c;Java世界中的戏剧&#xff0c;阴谋和政治活动异常高涨&#xff0c;最终在本周的JSR 376 Java平台模块系统公共评审投票中达到了顶峰。 Java模块化&#xff08;包括Java平台模块系统&#xff08;JPMS&#xff09;&#xff09;可以…

ps背景不变换字_PS教程:复杂背景中,如何利用通道轻松抠出发丝?

点击图片 1元抢购 PS、PR、AE等课程活动无缝抠图复杂背景当我们常用的钢笔抠图解决不了细碎的头发丝时我们可以用通道进行抠图&#xff0c;换背景在复杂的背景中把头发丝抠出来配套PS素材请到QQ群&#xff1a;565256668下载首先打开素材&#xff0c;我们发现背景比较复杂&…

java中$和 的区别详解_Mybatis之#{}与${}的区别使用详解

1.两种取值方式的差异mapper.xml映射文件select * from t_emp WHERE emp_id${id} and emp_name#{name}java查询代码 params 为 id1 ,name”小红”Testpublic void testSelect() {InputStream resourceAsStream ConfigTest.class.getResourceAsStream("../classes/mybatis…