我有一个Storm拓扑,我正在使用KafkaSpout
。
BrokerHosts zk = new ZkHosts("localhost:2181");
SpoutConfig spoutConf = new SpoutConfig(zk, "topic", "/topic", "discovery");
我想知道在SpoutConfig
传递的第3和第4个参数。
是第3个参数,Zookeeper根据路径安装Zookeeper还是dataDir
路径?
第四个参数是一个ID,但我不知道它为什么被使用,我该怎么办?
答案 0 :(得分:1)
zkRoot和id用于构造stormkeeper路径,在该路径下,storm存储kafka偏移量。你可以阅读它here。
spout存储Zookeeper中消耗的偏移量的状态。使用根路径对spout进行参数化以存储偏移量以及此特定喷口的id。因此,分区的偏移量将存储在这些路径中,其中" 0"," 1"是分区的ID:
{root path} / {id} / 0
{root path} / {id} / 1
{root path} / {id} / 2
{root path} / {id} / 3
...