分享

Storm并行度与kafka分区数

szcountryboy 发表于 2015-12-22 19:40:48 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 9314
如题,Storm并行度与kafka分区数是否有关系呢?
BrokerHosts brokerHosts = new ZkHosts(zkConnString);
SpoutConfig spoutConfig = new SpoutConfig(brokerHosts, topicName, "/storm", "TestLog" );
spoutConfig.scheme = new SchemeAsMultiScheme(new StringScheme());
spoutConfig.forceFromStart = false;
spoutConfig.zkServers = Arrays.asList(new String[]{"server2","server3","server4"});
spoutConfig.zkPort = 2181;
               
TopologyBuilder topology = new TopologyBuilder();
topology.setSpout("KafkaReader",  new KafkaSpout(spoutConfig) , 3);


这里并行度设的是3,topic的分区数是1的时候,消息不会露掉;当分区数是3的时候,接受消息就会露掉;分区数为5的时候,也会掉

咨询下,storm这里的并行度与kafka的分区数是否有对应关系?
并行度      分区数
3                2
3               10

已有(3)人评论

跳转到指定楼层
atsky123 发表于 2015-12-22 20:40:20
kafka中的topic为什么要进行分区?
kafka为什么要在topic里加入分区的概念?如果没有分区,topic中的segment消息写满后,直接给订阅者不是也可以吗?

若没有分区,一个topic对应的消息集在分布式集群服务组中,就会分布不均匀,即可能导致某台服务器A记录当前topic的消息集很多,若此topic的消息压力很大的情况下,服务器A就可能导致压力很大,吞吐也容易导致瓶颈。有了分区后,假设一个topic可能分为10个分区,kafka内部会根据一定的算法把10分区尽可能均匀分布到不同的服务器上,比如:A服务器负责topic的分区1,B服务器负责topic的分区2,在此情况下,Producer发消息时若没指定发送到哪个分区的时候,kafka就会根据一定算法上个消息可能分区1,下个消息可能在分区2。当然高级API也能自己实现其分发算法。

上面我们知道为什么分区了,那么storm并行度,更形象来讲,则是干活的人的多少。二者应该没有必然联系。

楼主看看不是只读取了分区1,其它分区没有读取

回复

使用道具 举报

Pengjx2015 发表于 2015-12-23 10:00:03
好高端问题
回复

使用道具 举报

szcountryboy 发表于 2015-12-23 10:03:06
谢谢各位解答,我在看下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条