Flink已被比作Spark,正如我所看到的那样,它是错误的比较,因为它将窗口事件处理系统与微批处理进行比较; 同样,将Flink与Samza进行比较对我来说没有多大意义.在这两种情况下,它都会比较实时与批量事件处理策略,即使在Samza的情况下规模较小的"规模".但我想知道Flink与Storm的比较,它在概念上看起来与它更相似.
我发现这个(幻灯片#4)将主要区别记录为Flink的"可调延迟".另一个提示似乎是Slicon Angle的一篇文章,该文章表明Flink更好地集成到Spark或HadoopMR世界中,但没有提及或引用实际细节.最后,Fabian Hueske 在接受采访时指出:"与Apache Storm相比,Flink的流分析功能提供了一个高级API,并使用更轻量级的容错策略来提供一次性处理保证."
这对我来说有点稀疏,我不太清楚.有人可以通过Flink解释Storm中的流处理是什么问题(??)?什么是Hueske所指的API问题及其"更轻量级的容错策略"?
Apache Kafka:分布式消息传递系统
Apache Storm:实时消息处理
我们如何在实时数据管道中使用这两种技术来处理事件数据?
就实时数据管道而言,在我看来,两者都是相同的.我们如何在数据管道上使用这两种技术?
这是关于用Java编写的风暴拓扑中的单元测试螺栓和喷口的一般性问题.
单元测试(JUnit?)螺栓和喷嘴的推荐做法和指南是什么?
例如,我可以为a编写一个JUnit测试Bolt,但是如果没有完全理解框架(如a的生命周期Bolt)和序列化含义,很容易犯错误的基于构造函数的非可序列化成员变量的创建.在JUnit中,此测试将通过,但在拓扑中,它将无法工作.我完全可以想象有许多测试点需要考虑(例如序列化和生命周期的这个例子).
因此,是否建议您使用基于JUnit的单元测试,运行小型模拟拓扑(LocalMode?)并测试该拓扑下的Bolt(或Spout)隐含合约?或者,使用JUnit是否可以,但其含义是我们必须仔细模拟Bolt的生命周期(创建它,调用prepare(),模拟Config等)?在这种情况下,要测试的被测类(Bolt/Spout)的一般测试点是什么?
在创建适当的单元测试方面,其他开发人员做了什么?
我注意到有一个拓扑测试API(参见:https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java).是否更好地使用某些API,并为每个人站起来"测试拓扑" Bolt&Spout(并验证Bolt必须提供的隐式合同,例如 - 它的声明输出)?
谢谢
我想通过下面的大文章,了解Twitter的风暴" 了解风暴的拓扑结构的并行 "
但是我对"任务"的概念感到有些困惑.任务是组件的运行实例(spout还是bolt)?具有多个任务的执行程序实际上是说执行程序多次执行相同的组件,我是否正确?
此外,在一般的并行意义上,Storm会为spout或bolt生成一个专用线程(执行程序),但是由具有多个任务的执行程序(线程)对并行性做出了什么贡献?我认为在一个线程中有多个任务,因为一个线程按顺序执行,只会使该线程成为一种"缓存"资源,从而避免为下一个任务运行产生新线程.我对么?
我可以在花更多时间调查之后自己清除那些困惑,但是你知道,我们都喜欢stackoverflow ;-)
提前致谢.
我正在使用Storm,它适用于很多用例.最近我看了一下Trident,它是Storm的高级抽象.它支持一次性处理,使状态处理更容易.
但现在我想知道..为什么我不能总是使用Trident而不是Storm?
到目前为止我读到的内容:
使用Trident而不是Storm时还有其他缺点吗?因为现在,我认为上面列出的缺点是微不足道的.
Trident无法实现哪些用例?
后果:
自从我问到我的公司决定先去三叉戟这个问题.当出现性能问题时,我们只会使用纯粹的Storm.可悲的是,这不是一个积极的决定,它只是成为默认行为(当时我不在身边).
他们的假设是,在大多数用例中,我们需要状态或仅一次处理,否则我们将在不久的将来需要它.我理解他们的推理是因为从Storm转到Trident或者回来并不是一个简单的转换,但在我个人看来,没有状态的流处理的概念并没有被所有人理解,这是使用Trident的主要原因.
numpy.array.tostring似乎没有保留有关矩阵维度的信息(请参阅此问题),要求用户发出呼叫numpy.array.reshape.
有没有办法将numpy数组序列化为JSON格式,同时保留这些信息?
注意: 数组可能包含整数,浮点数或布尔值.期望转置数组是合理的.
注2: 这样做的目的是使用streamparse将numpy数组传递给Storm拓扑,以防这些信息最终变得相关.
我不明白如何在Apache Storm中拆分流.例如,我有一个螺栓A,经过一些计算后有somevalue1,somevalue2和somevalue3.它想将somevalue1发送到bolt B,somevalue2发送到bolt C,somevalue1,somevalue2发送到bolt D.如何在Storm中执行此操作?我将使用什么分组以及拓扑结构会是什么样的?预先感谢您的帮助.
我偶然发现了这篇文章,声称将Samza与Storm进行了对比,但似乎只是为了解决实现细节问题.
这两个分布式计算引擎的用例在哪些方面有所不同?每种工具都适合做什么工作?
Storm如何与Hadoop相比?Hadoop似乎是开源大规模批处理的事实标准,Storm有没有优于hadoop的优势?还是他们完全不同?
我试图建立一个项目,来自git的风暴 https://github.com/nathanmarz/storm/wiki/Setting-up-development-environment
Download a Storm release , unpack it, and put the unpacked bin/ directory on your PATH
Run Code Online (Sandbox Code Playgroud)
我的问题是什么是PATH的意思,他们究竟想让我做什么?
有时候我会看到一些/ bin/path,$ PATH,echo PATH
有人可以解释PATH的概念,所以我可以在将来轻松设置一切而不是盲目地遵循指示吗?
这绝对是技术问题.也许是专业人士的琐事.但对于像我这样的入门人士确实需要一些指南.我不明白为什么人们试图关闭这个问题.
apache-storm ×10
apache-flink ×1
apache-kafka ×1
apache-samza ×1
hadoop ×1
json ×1
junit ×1
linux ×1
macos ×1
numpy ×1
python ×1
streaming ×1
system ×1
topology ×1
trident ×1
unit-testing ×1
unix ×1