kafka-configs.sh 脚本是专门用来对配置进行 *** 作的,这里的 *** 作是指在运行状态下修改原有的配置,如此可以达到动态变更的目的。kafka-configs.sh 脚本包含变更配置 alter 和查看配置 describe 这两种指令类型。同使用 kafka-topics.sh 脚本变更配置的原则一样,增、删、改的行为都可以看作变更 *** 作,不过 kafka-configs.sh 脚本不仅可以支持 *** 作主题相关的配置,还可以支持 *** 作 broker、用户和客户端这3个类型的配置。
kafka-configs.sh 脚本使用 entity-type 参数来指定 *** 作配置的类型,并且使用 entity-name 参数来指定 *** 作配置的名称。比如查看主题 topic-config 的配置可以按如下方式执行:
bin/kafka-configs.sh --zookeeper localhost:2181/kafka --describe --entity-type topics --entity-name topic-config
--describe 指定了查看配置的指令动作,--entity-type 指定了查看配置的实体类型,--entity-name 指定了查看配置的实体名称。entity-type 只可以配置4个值:topics、brokers 、clients 和 users,entity-type 与 entity-name 的对应关系如下表所示。
使用 alter 指令变更配置时,需要配合 add-config 和 delete-config 这两个参数一起使用。add-config 参数用来实现配置的增、改,即覆盖原有的配置;delete-config 参数用来实现配置的删,即删除被覆盖的配置以恢复默认值。
下面的示例演示了 add-config 参数的用法,覆盖了主题 topic-config 的两个配置 cleanup.policy 和 max.message.bytes(示例执行之前主题 topic-config 无任何被覆盖的配置):
[root@node1 kafka_2.11-2.0.0]# bin/kafka-configs.sh --zookeeper localhost:2181/ kafka --alter --entity-type topics --entity-name topic-config --add-config cleanup.policy=compact,max.message.bytes=10000 Completed Updating config for entity: topic 'topic-config'. [root@node1 kafka_2.11-2.0.0]# bin/kafka-configs.sh --zookeeper localhost:2181/ kafka --describe --entity-type topics --entity-name topic-config Configs for topic 'topic-config' are max.message.bytes=10000,cleanup.policy= compact [root@node1 kafka_2.11-2.0.0]# bin/kafka-topics.sh --zookeeper localhost:2181/ kafka --describe --topic topic-config --topics-with-overrides Topic:topic-config PartitionCount:3 ReplicationFactor:1 Configs:max.message.bytes=10000,cleanup.policy=compact
上面示例中还使用了两种方式来查看主题 topic-config 中配置信息,注意比较这两者之间的差别。
使用 delete-config 参数删除配置时,同 add-config 参数一样支持多个配置的 *** 作,多个配置之间用逗号“,”分隔,下面的示例中演示了如何删除上面刚刚增加的主题配置:
[root@node1 kafka_2.11-2.0.0]# bin/kafka-configs.sh --zookeeper localhost:2181/ kafka --alter --entity-type topics --entity-name topic-config --delete-config cleanup.policy,max.message.bytes Completed Updating config for entity: topic 'topic-config'. [root@node1 kafka_2.11-2.0.0]# bin/kafka-configs.sh --zookeeper localhost:2181/ kafka --describe --entity-type topics --entity-name topic-config Configs for topic 'topic-config' are
使用 kafka-configs.sh 脚本来变更(alter)配置时,会在 ZooKeeper 中创建一个命名形式为/config/
[zk: localhost:2181/kafka (CONNECTED) 1] get /config/topics/topic-config {"version":1,"config":{"cleanup.policy":"compact","max.message.bytes":"10000"}}
可以推导出节点内容的数据格式为:
{"version":1,"config":{: }}
其中 property-name 代表属性名,property-value 代表属性值。增加配置实际上是往节点内容中添加属性的键值对,修改配置是在节点内容中修改相应属性的属性值,删除配置是删除相应的属性键值对。
变更配置时还会在 ZooKeeper 中的/config/changes/节点下创建一个以“config_change_”为前缀的持久顺序节点(PERSISTENT_SEQUENTIAL),节点命名形式可以归纳为/config/changes/config_change_
[zk: localhost:2181/kafka (CONNECTED) 3] get /config/changes/config_change_0000000010 {"version":2,"entity_path":"topics/topic-config"}
seqNo 是一个单调递增的10位数字的字符串,不足位则用0补齐。
查看(describe)配置时,就是从/config/
[root@node1 kafka_2.11-2.0.0]# bin/kafka-configs.sh --zookeeper localhost:2181/ kafka --describe --entity-type topics Configs for topic 'topic-config' are cleanup.policy=compact,max.message.bytes=20000 Configs for topic 'topic-create' are Configs for topic '__consumer_offsets' are segment.bytes=104857600,cleanup.policy=compact,compression.type=producer Configs for topic 'topic-demo' are主题端参数
与主题相关的所有配置参数在 broker 层面都有对应参数,比如主题端参数 cleanup. policy 对应 broker 层面的 log.cleanup.policy。如果没有修改过主题的任何配置参数,那么就会使用 broker 端的对应参数作为其默认值。可以在创建主题时覆盖相应参数的默认值,也可以在创建完主题之后变更相应参数的默认值。比如在创建主题的时候没有指定 cleanup.policy 参数的值,那么就使用 log.cleanup.policy 参数所配置的值作为 cleanup.policy 的值。
与主题相关的参数也有很多,由于篇幅限制,在前面的配置变更的示例中难以一一列出所有的参数,但是从配置变更的角度而言,其 *** 作方式都是一样的。为了便于读者查阅,下表列出了主题端参数与 broker 端参数的对照关系。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)