我是风暴中的新手,我在开发看似简单的东西时遇到了困难
我的设想如下:
DRPC听取用户输入,例如:“名称”
BoltA收听DRCP的输出。BoltA接收名称并在DB中搜索,获得包含名称的完整字符串并逐个发出
BoltB听BoltA的输出。BoltB接收包含名称的完整字符串,执行进程B并发出结果字符串
BoltC听BoltA的输出。BoltC接收完整的字符串,执行一个进程C并发出结果字符串
BoltD听取BoltB和BoltC的输出,加入结果并发出最终结果,发送给查询DRPC的用户
[已编辑]
我创建了一个Bolt,每次调用它时都会发出100次(对于循环)10字节的消息。
这场风暴行动缓慢
是什么原因造成的?排满了吗?内存问题?尝试增加storm内部队列缓冲区大小并检查性能。缓慢操作是什么意思?竞争什么?这是生产环境还是本地机器?在本地机器中,如果我直接从喷口发出100k元组,大约需要1秒,但是如果我从喷口发出1k元组,然后从螺栓(从喷口获取数据)发出每个元组100次(使用循环),大约需要7秒的时间来排队?您建议如何更改缓冲区大小?从风暴配置文件或(如果可能)从代码中的配置对象?
c
最近,我使用VMWare在本地虚拟机上部署了storm。部署的版本是v0.9.2-孵化发布版本。我面临的问题是,“$storm supervisor”在每次重新启动后都不起作用
现在,我用来清理storm.local.dir目录的糟糕修复程序。我希望有人能帮我找到一个新的解决方案
Zookeeper version: zookeeper-3.4.6
Storm version: 0.9.2-incubating (uses Netty transport)
zeromq version: zer
在这种情况下,我需要通过编程停止喷口,并在外部事件发生变化时使用更新的参数重新启动喷口。可以将此视为一个外部系统,它为我提供了一个对消息源的过期密钥访问
所以,一旦到期,我需要更新此代币并重新启动喷口。我一直在尝试使用风暴信号()来实现这一点。虽然我可以将信息输入喷口,但重新启动喷口似乎不起作用。其他选项是作为一个整体重新启动拓扑(Nimbus API?),我不想这样做。
感谢所有的指点者我将试着回答这个问题,因为我对你的情况还不太清楚
解决方案1:喷口更新令牌
如果您的喷口有一个过期令牌,用于
我是风暴的新手。当我在教程示例中尝试trident时,它们通常是一批中非常少量的元组(通常不超过10个)。
Trident的目标是提供高吞吐量,每秒数百万条消息。
所以我想问,在现实世界中,一批中有多少元组是合理的?这个问题没有直接的答案。这完全取决于您的工作负载以及您正在运行的拓扑类型。一旦有了所需的拓扑结构,就可以查看总体吞吐量指标,并不断增加批处理大小,直到发现一些性能问题并进行调试。如果这仅仅是由于处理的结构方式造成的,并且您无法进一步改进它,那么您可以满足于更小的批处理大小
发件人:
我尝试执行以下命令:
storm[topologyName]-e[bolt name]=[num\u execs]
命令成功运行,但执行者的数量保持不变。我尝试更改拓扑的工作人员数量,结果它正常工作
这是虫子吗
谢谢
Punit您只能将并行性(执行者的数量)增加到任务的数量。因此,如果您的组件具有例如(执行器数量:50,任务数量:50),那么您不能增加并行性,但可以降低并行性。您只能将并行性(执行器数量)增加到任务数量。因此,如果您的组件具有例如(执行器数量:50,任务数量:50),那么您不能增
我部署了一个长时间运行的Storm拓扑。运行几个小时后,整个拓扑结构都崩溃了。我检查了工作日志,发现了这些日志。正如它所说,zookeeper客户端会话超时,导致重新连接。我怀疑这与我的坏拓扑结构有关。现在,我试图找出什么会导致客户端超时
2016-02-29T10:34:12.386+0800 o.a.s.z.ClientCnxn [INFO] Client session timed out, have not heard from server in 23789ms for session
我正在apache storm中研究容错机制。我遵循文档来启用状态检查点()。但是,在使用定期状态检查点执行任何有状态拓扑之后,我无法监视和跟踪检查点。我查看了nimbus和supervisors的日志,但没有找到任何关于检查点的信息。
请指导我如何跟踪和监控apache storm中的检查点。早些时候,我在ApacheFlink中使用了检查点,在UI和作业管理器的日志中有非常直接的检查点监控。但在风暴中,我没有在检查点、UI和日志中找到任何信息。
我感谢你花时间指导我。
顺致敬意,
赛义德
在我们的一个包含1个喷口和1个螺栓的拓扑结构中,我有一种预感,螺栓完成得很好(并且有回缩),但喷口仍然失败
我试图通过如下的TaskHook来确认这一点-
public class BaseHook extends BaseTaskHook {
private Logger logger;
private String topology;
private String component;
public BaseHook(String component) {
我们有多机风暴集群。在storm UI上,我们可以看到主管的总数等于机器的总数。我认为,当另一台机器或同一台机器在同一集群内死亡时,nimbus应该重新启动它的管理器。请告知遗漏了什么?好的,Nimbus不会杀死或重新启动Supervisor
当Nimbus需要请求一些主管执行任务时,Nimbus使用临时节点从Zookeeper中查找实时主管列表
就这些。Nimbus不直接照顾主管
我以完全分布式模式(3个节点)设置了ApacheStorm 0.9.3,该模式利用了由3个节点组成的完全分布式ApacheZooKeeper集群(3.4.6)。我做了以下测试,发现如果配置Storm.yaml中的第一个zookeeper服务器关闭或暂时无法访问,Storm Nimbus无法启动
测试#1:
打开所有三个zookeeper节点
在storm master节点上启动nimbus、supervisor、ui,并在其他两个节点上启动supervisor
在这种情况下,一切进展顺利
测
这是时间风暴再次阻止我在一个未知的问题。当我启动风暴时,只有一部分工人活着,然后死亡,而有时所有工人在几秒钟内都活着。所以他们只是让循环不至于生死存亡
我检查了工人的日志文件,它不断重复一个问题:
[错误]尝试连接*(从1到25)到Netty0Client-node1-1/10.19.1.1:6702失败:java.lang.RuntimeException:返回的通道实际上未建立
(storm版本-0.9.5)在哪里可以找到解决方案?我面临着同样的问题…导致我的问题的原因是程序执行中发生的错误
我一直在努力按照回购协议中的指南,在本地获得一份Storm working的副本,而这本书
尝试使用mvn compile exec:java-Dstorm.topology=org.apache.storm.starter.EquipmentOnTopology运行拓扑时,输出最终会继续循环和垃圾邮件:
28534 [Thread-9-SendThread(localhost:2000)] INFO o.a.s.s.o.a.z.ClientCnxn - Opening socket conn
我可以看到,我们已经为Storm中的特定流提供了洗牌组合,如下所述:
但我有一个用例,我想对喷口发出的特定流进行字段分组
例如,SpoutWithStreams发出带有随机词的stream1,我希望myBolt1订阅此流,但我也希望myBolt1的特定实例接收相同的词,即我希望字段分组在stream1上
所以我想要的是这样的:
builder.setBolt("myBolt1", new MyBolt1()).fieldsGrouping("boltWithStreams", "stream1"
我有一个拓扑结构,它将目前无法处理的数据保存到一个特殊的数据库中。一旦我添加了处理数据的功能,我希望能够告诉拓扑“去处理从[time a]到[time B]的一块剩余数据”
是否有一种“风暴式”的方法来实现这一点?例如,通过向Storm UI添加交互元素(按钮、输入字段?我不认为内置了类似的内容。您可能做的是将无法处理的记录写到某个地方(例如卡夫卡),直到您可以处理它们为止。当您可以处理它们时,您可以通过将不可处理记录主题添加到Kafka输入主题,使Storm拾取它们,或者启动仅使用不可处理记录
我正在尝试运行带有窗口螺栓的拓扑,但出现以下异常:
Exception in thread "main" java.lang.NullPointerException
at org.apache.storm.topology.WindowedBoltExecutor.declareOutputFields(WindowedBoltExecutor.java:309)
at org.apache.storm.topology.TopologyBuilder.getComponent
我们正在将Storm版本从1.x.x升级到2.1.0,并且能够启动Storm群集,到目前为止,它运行良好,只有一个拓扑
我们在Storm UI中看到一个新的owner部分,红色背景显示以下消息:
由于所有者过度使用群集资源,此用户的拓扑有被计划外的危险
有人能告诉我们为什么会发生这种情况以及解决方法吗
storm拓扑包含使用>1个线程运行的喷口组件。
e、 g
喷口(打开功能)打开并读取文本文件的所有行,然后
nextTuple将每条线发射到一个螺栓
当运行两个线程时,对于喷口,文件的每一行将被读取两次
我是新来的风暴,我想知道最好的方式处理这个?
我可以将线程数减少到1,或者修改喷口,使每个线程
阅读不同的行-或者我需要(如何)使用TopologyContext
参数
我不确定我是否错过了一个“风暴”方式来实现这一点?西蒙
Storm没有并行读取本地文件系统上存储的文件的功能。您可以编写一个
我使用的是Kafka storm,Kafka向storm发送/发出json字符串,在storm中,我想根据json中的键/字段将负载分配给两个工人。怎么做?在我的例子中,它是json字符串中的groupid字段
例如,我有这样的json:
{groupid: 1234, userid: 145, comments:"I want to distribute all this group 1234 to one worker", size:50,type:"group json"}
{group
我有一个拓扑,并在本地模式下运行它,比如喷口a-->螺栓B-->螺栓C。此外,我定义了一个对象对象D,它是从B到C发出的值。我有两个问题:
我在Bolt B中设置TOPOLOGY\u TICK\u TUPLE\u FREQ\u SECS,并在创建Bolt B时新建Object D。当TupleHelpers.isTickTuple(输入)为true时,它向螺栓C发射对象D。我认为风暴将克隆对象D并在螺栓C中生成一个新的,但是,当我尝试更新对象D的内容时,它仍然在螺栓B中更改。为什么?这两个螺栓可
我是风暴中的新手,正在尝试提交拓扑图,发现了这个
内部主管
我在工人的日志文件中找到了这个
[ERROR] Async loop died!
java.lang.RuntimeException: org.apache.thrift7.transport.TTransportException: java.net.ConnectException: Connection refused
at backtype.storm.drpc.DRPCInvocationsClient.<i
我正在跟踪&在awsec2的ubuntu14.04lts中设置apachestorm集群
我的主节点是10.0.0.185。我的从属节点在zookeeper数据中分别为10.0.0.83、10.0.0.124和10.0.0.84,myid为1、2和3。我建立了一个由所有3个从节点组成的ApacheZooKeeper集合
下面是我的主节点和从节点的my zoo.cfg:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zoo
我的拓扑结构有一两个瓶颈。Storm UI中的容量度量对于识别这些是有用的,但我更感兴趣的是Bolt队列的大小
我的理解是,每个bolt都有两个队列,一个用于待执行的元组,另一个用于待发出的元组。是否可以监视这些队列的大小
我在网上找到了一些关于在bolt中添加ITaskHook实现的东西,但还不清楚如何使用它来监控队列大小。是否可以使用ITaskHook中的方法来监视此情况?您应该能够使用该机制查看拓扑组件的队列长度。一种简单的方法是将conf.registerMetricsConsumer(
我是新来的风暴试图使用窃听
我在storm.yaml
但当我完成sumbiting拓扑时,找不到调试的结果在哪里
我在storm ui中注意到topology.debug为false
为什么它不能读取我的更改?集群中的每个节点/计算机都有自己的storm.yaml文件。因此,您对本地storm.yaml的更改不会产生任何影响。但是,您可以通过提交拓扑时提供的拓扑配置覆盖此值:
Config cfg=new Config();
setDebug(true);
submitTopology(“myT
如何通过ApacheStorm拓扑访问目录中的文件
在拓扑类中,im传递AnnotationTest类的对象
Config conf = new Config();
conf.put("gateObject", new AnnotationTest());
在螺栓类中,我正在访问该对象
AnnotationTest at;
@Override
public void prepare(Map stormConf, TopologyContext context) {
a
我有一个风暴拓扑,我做:setNumWorkers(1)
当我查看此运行拓扑上的storm UI报告时,我看到Num workers设置为1
但是,当我登录到运行supervisor的节点时,我看到两个进程对-Dworker.id和-Dworker.port具有相同的设置
我包括ps显示的以下两个过程的输出
我的问题是:如果我只请求了一个进程,为什么会有两个进程被配置为工作进程(注意:Storm UI确认我只有一个工作进程)
这对我来说很重要,因为当我对我的拓扑所消耗的资源进行任何分析或分析时,
我想通过喷口从一个数据库获取数据,并使用trident处理数据并将其存储在另一个数据库中。我对storm和trident不太熟悉,不知道如何实现它。我从喷口(实现trident支持的IRichSpout的独立java类)中的数据库获取数据我将它作为一个对象发出,我需要将它传递给trident拓扑进行处理(计算记录数)并将其存储到数据库中
TridentTopology topology = new TridentTopology();
TridentState wordCounts =
我正在为卡夫卡制作多个主题。我想从卡夫卡检索所有主题,我有不同的喷口和螺栓。我想将每个主题发送到相应的喷口和相关螺栓(例如,对于主题1,我有相应的喷口1和螺栓1,对于主题2,我有相应的喷口2和螺栓2等等)
我怎样才能做到这一点?虽然我无法确切了解您想要做什么(您是否为每个主题运行了单独的拓扑结构?),但通常您可以做的是,在您的配偶中创建一个消费者,该消费者将订阅topic1,并在收到topic1后立即发送值。然后将输出链接到相应的螺栓,以便进一步执行
但据我所知,您应该看看github stor
我已经在5节点集群中安装了storm-0.9.2。我有一个简单的拓扑结构,有一个喷口和不同数量的螺栓(4、9、22、31)。对于每个配置,我都配置了(#螺栓+1)个工人。因此,对于4个螺栓,我有5个工人,22个螺栓和23个工人,等等
我在worker日志文件中观察到失败的worker进程,在zookeeper.out日志文件中出现相应的EndOfStream异常。当我得到一个干净的测试运行时,每个bolt处理的元组数量均匀地分布在每个worker上。在非干净的测试运行中,失败的工作进程尝试重新连
我想知道trident批次是否并行执行,即一次可以运行多个批次
除此之外,我还有几个问题太小,无法单独发布。如果它们足够大,请随意评论并单独发布
如果在批处理中仅处理特定元组失败,该怎么办
然后该批将被重放,从而重新处理先前成功处理的元组?例如,单词计数,其中每个元组包含一个单词,但只有几个元组被成功计数?例如,如果有三个名为man的单词,计数仅显示2,这意味着一个元组处理失败
仅在此情况下,存储以前的txid。以前的事务ID如何
例如,有三个批次1、2、3、4。现在,在第1批之后,执行第2批,
我试图安装最新版本的storm,storm 0.10.beta1
并使用下面的supervisord脚本启动supervisor,但我得到了TProtocolException:Required字段“serialized_parts”是unset error。
暴风雪。yaml
storm.zookeepereeper.servers:
- "192.168.10.30"
storm.zookeeper.port: 2181
storm.loca
我有一个集群,每个集群有一个nimbus(双核,4GB)和三个监控器(双核,4GB)。并行度为1,4,1拓扑是否可能使用过多内存和worker.childopts设置过低
您是否监控过拓扑资源(例如,通过“顶部”或探查器)并查看它“失败”时会发生什么情况?1个喷口、4个逻辑螺栓、1个写入螺栓否,现在我可以运行拓扑,但我的最大喷口挂起为200,但它花费了太多时间(44小时处理14个LAC输入对)我想加快拓扑结构的速度,使其能够在10小时内处理完整的输入
我正在尝试风暴分析
问题在于您的Java类路径。。。这完全取决于您如何设置项目。我给你一个建议,而不是试图解决你的问题
如果您使用的是Java,那么创建storm拓扑的“正常”方法是使用Maven,它应该与您正在使用的任何IDE(Eclipse、Intellij等)一起工作
一旦您有了一个骨架maven项目设置,您所需要做的就是添加storm依赖项。例如:
<dependency>
<groupId>org.apache.storm</gro
在基于Storm的应用程序中,我需要定期查询oracle表,所以我想使用Storm的Tick元组。但它并没有给出正确的结果,而且tick tuple也并没有生成
我的风暴版本是1.0.1.2.5.3.0-37
我试过如下方法
在bolt as链接中添加了getComponentConfiguration方法,但未生成记号元组
所以我修改了代码,并使用拓扑中的Config来生成tick tuple
下面是我的带bolt的tick tuple代码
public class TickTupleBolt
我的用例:
我有许多域需要爬网,每个域都有自己的过滤器配置。每个域现在都作为拓扑运行。
我看到一些域已经爬网了大约10万个URL,在状态队列中还有50万个。
其他拓扑都闲置着,只获取种子url。
每个拓扑都有2GB的RAM,每个队列有10个线程,最大bucket为50,每个bucket的url为100
拓扑闲置的原因可能是什么。。?我怀疑状态队列中有大量URL处于“已发现”状态。您使用什么作为后端?如果是ES,那么您应该能够使用Kibana检查状态索引,并查看这些空闲爬网的种子会发生什么情况。这
其他暴风用户:
设置风暴群的指南()
指示应设置supervisor.slots.ports配置属性,以便为计算机上的每个工作进程
您可以为一个单独的端口分配一个端口
我的理解是,每个worker都是一个JVM实例,用于侦听来自nimbus控制器的命令。。
因此,每个人都在一个单独的端口上侦听是有意义的
但是,backtype.storm.Config上还有一个方法,它似乎允许定义工人数量。如果对setNumWorkers的调用试图设置的工作线程数超过您为其配置的端口数,该怎么办?
那似乎会把事
我已经安装了Kestrel服务器,能够通过python库设置和使用队列
我们有一个场景,python客户端写入Kestrel队列,而Storm spout需要从队列中读取数据。
我尝试过使用storm kestrel库,但遇到了问题。谷歌似乎暗示它不支持memcache端口(22133)
我已经添加了提供的maven绑定。没有使用Kestrel Riftspoot喷口,而是使用Kestrel.Client。编译很好,但我在运行时得到java.lang.NoClassDefFoundError错误
我的问题类似于这个问题:
但我想知道最新的解决方案和更好的解决方法
我将在storm用户邮件列表中发布相同的描述:
大家好
我正在构建一个包含大量库的拓扑,如spring、geotools等。现在,我使用maven提取每个jar文件并将其打包到一个jar中(正如许多论坛所建议的)。这里的问题是,每个jar有时都有冲突的文件,所以我必须手动合并。另一件事,虽然我将我的库打包在jar中,但storm首先加载它的库。例如,我用番石榴16,暴风雪用番石榴13。我的程序无法运行,因为guava 13已加
什么是nimbus.task.timeout.secs属性是storm。它与拓扑、消息、超时、秒有何不同请参见以下代码库中的定义
nimbus.task.timeout.secs-
在nimbus完成任务之前,一项任务能完成多久而不令人心碎
考虑任务已死亡并将其重新分配到另一个位置。
拓扑.消息.超时.秒-
为拓扑提供的完全处理数据的最长时间
喷口发出的信息。如果该消息未在此范围内确认
时间范围内,Storm将无法发送喷口上的消息。一些喷口
然后,实现将在稍后时间重播该消息
看看风暴内部的情况
在我看来,《暴风雨》有一些局限性
你能告诉我以下几点是正确的吗
工人数量应小于或等于执行者数量
执行者的数量应小于或等于任务的数量
考虑到以上两点,重新平衡仅适用于将执行器或工作人员移动到其他节点等
重新平衡无助于动态增加任务数
因此,根据以上几点,Storm不能完全扩展
您可以考虑任务作为螺栓/喷口的运行实例。这是固定的(静态的),并且在拓扑运行时永远不能更改?执行器实际上是可以动态更改的线程
如果设置numtasks=4,executors=2,则每个线程将运行2个任务。但是任务在执行器上连
喷口->螺栓1->螺栓2->螺栓3->确认原始ID(释放队列上的消息)
基本拓扑结构似乎工作了几分钟,但在某个时候,消息既没有被发送,也没有被使用,螺栓也没有被调用。我无法判断java线程是否死掉,因为日志中没有异常或任何错误迹象
ApacheStorm.92或.95对我来说都有相同的结果
我已经为storm编写了几年的程序,但从来没有看到过这一点……好的,因为我之前的回复被删除了,我将再试一次。
我们已经看到了类似的行为,尤其是在重载情况下。原来是因为一个缓慢的螺栓。结果,这个缓慢的进程填满了
我从下载了storm软件包,但这似乎只是源代码:
root@ bin]# ./storm
******************************************
The storm client can only be run from within a release. You appear to be trying to run the client from a checkout of Storm's source code.
You can download a Stor
我在尝试为本地开发人员Windows 7工作站启动storm nimbus时遇到以下错误:
错误:无法找到或加载主类文件\Java\jdk1.8.0_92\bin;C:\程序
storm.yaml:
storm.zookeeper.servers:
- "127.0.0.1"
nimbus.seeds: ["127.0.0.1"]
storm.local.dir: "C:\\Users\\userX\\Apps\\ApacheStorm\\apache-storm-1.0.1\\dat
我有一个螺栓,在小批量的元组工作。我基本上有一个switch语句,它可以侦听来自前一个bolt的流或tick元组。它看起来像这样:
switch(component) {
bolt1:
do some work...
anchors.add(tuple)
tick:
do some work...
collector.emit(anchors, value)
collector.ack(tuple)
anch
我能够使用TridentState提供的partitionpersist api成批处理事件流。但现在,我想发出此螺栓的处理值,并将其作为后续螺栓中的另一批事件收集。TridentState上的state.newValuesStream()方法正是这样做的——它从TridentState返回一个新更新的值流。我这样做的。他实际上面临着另一个问题。谢谢你的回答。
我刚刚开始使用OS X 10.9.5上的Twitter风暴框架。但是,在storm starter中运行示例拓扑时遇到了一个问题:
在自述文件之后,我尝试通过调用
sudo mvn exec:java -Dstorm.topology=storm.starter.WordCountTopology
拓扑运行不到一分钟,然后在错误中终止:
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java (
我意识到这有点模糊,但任何关于如何解决这一问题的建议都会非常有用
我的拓扑使用KafkaSpout。当我启动拓扑时,我看到下面的异常,我的所有执行者都死了。然后,工作者尝试再次启动,异常发生,执行者死亡。这种情况一直没有解决,工作人员的正常运行时间从未超过几秒钟
java.lang.IndexOutOfBoundsException: null
at java.nio.Buffer.checkIndex(Buffer.java:538) ~[na:1.7.0_11]
at jav
我有3个节点的风暴集群:supervisors-2,Nimbus-1。3个节点有30 Gb的Ram和4个cpu核。在我配置的配置中:
supervisor.slots.ports : 8 (6700-6708)
supervisor.childopts :-Xmx4096m _JAAS_PLACEHOLDER
ui.childopts :-Xmx1024m _JAAS_PLACEHOLDER
nimbus.childopts :-Xmx6144m _JAAS_PLACEHOLDER
我想
我一直在使用storm拓扑设置,以便在不出现OutOfMemory错误的情况下实现最大吞吐量
我的设置:
3节点风暴(v1.0.1)集群。显然,一个节点也是主节点,部署在AWS m3.2x大型实例上。共有12名工作人员(每个节点4名):
每个辅助进程有4 GB堆空间:
worker.heap.memory.mb: 4096
特别是我的一个螺栓,我们称之为:HashingBolt有一个并行性提示12
这将创建12个执行器,每个执行器一个任务(因为我使用Flux来配置/部署)。
HashingBo
我正在从事物联网项目,在那里我接收CoAP协议中的数据流。
我想通过在Heron上进行一些转换来处理数据。
是否可以将CoAP协议对象集成到heron?我认为从CoAP端点的角度来看,将接收到的数据放在哪里并不重要
将此链接用作初始点:
在这里,您可以找到几种语言/平台实现的简要说明
不幸的是,我不熟悉Twitter Heron,也不知道哪种语言最适合实现Heron数据提供者
如果这样的语言是java或Heon是语言不可知的(例如,有一个REST API作为主接口),我会认为这是一个非常成熟的
上一页 1 2 ...
5 6 7 8 9 10 11 ...
下一页 最后一页 共 15 页