Amo*_*rni 10 java load-balancing apache-kafka apache-storm
我试图在多个喷口之间分享任务.我有一种情况,我从外部源一次获得一个元组/消息,我想要有多个spout实例,主要目的是分担负载并提高性能效率.
我可以用一个Spout本身做同样的事情,但我想分享多个喷口的负载.我无法获得分散负载的逻辑.由于消息的偏移在特定喷口完成消耗部件之前将不会被知道(即,基于设置的缓冲器大小).
任何人都可以对如何计算逻辑/算法有一些启发吗?
预付谢谢你的时间.
5
)builder.setSpout("spout", new KafkaSpout(cfg), 5);
通过泛滥800 MB
每个分区上的数据进行测试,并~22 sec
完成读取.
再次,使用parallelism_hint = 1
即代码builder.setSpout("spout", new KafkaSpout(cfg), 1);
现在需要更多~23 sec
!为什么?
根据Storm Docs的 setSpout()声明如下:
public SpoutDeclarer setSpout(java.lang.String id,
IRichSpout spout,
java.lang.Number parallelism_hint)
Run Code Online (Sandbox Code Playgroud)
其中,
parallelism_hint - 是执行此喷口应分配的任务数.每个任务都将在群集周围某个进程中的某个线程上运行.
mit*_*esh 18
我在暴风雨用户中遇到了一个讨论相似问题的讨论.
使用kafka-spout进行风暴时需要注意的2件事
因此,如果我们有一个案例,其中每个主机的kafka分区配置为1,主机数为2.即使我们将spout parallelism设置为10,所需的最大值也只是2,即分区数.
如何提及Kafka-spout中的分区数量?
List<HostPort> hosts = new ArrayList<HostPort>();
hosts.add(new HostPort("localhost",9092));
SpoutConfig objConfig=new SpoutConfig(new KafkaConfig.StaticHosts(hosts, 4), "spoutCaliber", "/kafkastorm", "discovery");
Run Code Online (Sandbox Code Playgroud)
如您所见,此处可以使用代理添加代理,hosts.add
并且在代码段中将分区编号指定为4new KafkaConfig.StaticHosts(hosts, 4)
.
如何提及Kafka喷口的平行度暗示?
builder.setSpout("spout", spout,4);
Run Code Online (Sandbox Code Playgroud)
您可以在使用setSpout
方法将spout添加到拓扑中时提及相同内容.这里4 是并行性提示.
更多可能有用的链接
免责声明:!! 我是风暴和java的新手!!!! 所以请编辑/添加,如果它需要一些在哪里.
归档时间: |
|
查看次数: |
10683 次 |
最近记录: |