Kafka常用API命令汇总

Kafka常用API命令汇总

0、启动kafka集群

kafka-server-start.sh -d config/server.properties

1、列出集群里的所有主题。

$ kafka-topics.sh --zookeeper node01:2181,node02:2181,node03:2181 --list

2、 创建一个叫作my-topic的主题,主题包含8分区,每个分区拥有两个副本。
kafka-topics.sh --zookeeper node01:2181,node02:2181,node03:2181 --create --topic source_topic --replication-factor 3 --partitions 2

3、列出集群里所有主题的详细信息。
kafka-topics.sh --zookeeper node01:2181,node02:2181,node03:2181 --describe

4、列出集群里特定主题的详细信息。
kafka-topics.sh --zookeeper node01:2181,node02:2181,node03:2181 --describe --topic my-topic

5、删除一个叫作my-topic的主题。
kafka-topics.sh --zookeeper node01:2181,node02:2181,node03:2181 --delete --topic my-topic

需要设置 delete.topic.enable 为true

6、列出旧版本的所有消费者群组。
kafka-consumer-groups.sh --zookeeper node01:2181,node02:2181,node03:2181 --list

7、列出新版本的所有消费者群组。
kafka-consumer-groups.sh --new-consumer --bootstrap-server node01:9092,node02:9092,node03:9092 --list

8、获取旧版本消费者群组testgroup的详细信息。
kafka-consumer-groups.sh --zookeeper node01:2181 --describe --group testgroup

9、获取新版本消费者群组console-consumer-87024的详细信息。
kafka-consumer-groups.sh --new-consumer --bootstrap-server node01:9092,node02:9092,node03:9092 --describe --group console-consumer-87024

10、查看某一个topic对应的消息数量。
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list node01:9092 --topic B2CDATA_COLLECTION3 --time -1

11、查看log日志片段的内容,显示查看日志的内容。
kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.log --print-data-log

12、控制台生产者:向主题 my-topic 生成两个消息。
kafka-console-producer.sh --broker-list node01:9092 --topic my-topic

13、控制台消费者:从主题 my-topic 获取消息。
kafka-console-consumer.sh --zookeeper node01:2181,node02:2181,node03:2181 --topic my-topic --from-beginning

server.properties 配置项

名称 说明 默认值 有效值 重要性
bootstrap.servers kafka集群的broker-list,如:hadoop01:9092,hadoop02:9092 必选
acks 确保生产者可靠性设置,有三个选项:acks=0:不等待成功返回acks=1:等Leader写成功返回acks=all:等Leader和所有ISR中的Follower写成功返回,all也可以用-1代替 -1 0,1,-1,all
key.serializer key的序列化器 ByteArraySerializerStringSerializer 必选
value.serializer value的序列化器 ByteArraySerializerStringSerializer 必选
buffer.memory Producer总体内存大小 33554432 不要超过物理内存,根据实际情况调整 建议必选
compression.type 压缩类型压缩最好用于批量处理,批量处理消息越多,压缩性能越好 none、gzip、snappy
retries 发送失败尝试重发次数 0
batch.size 每个partition的未发送消息大小 16384 根据实际情况调整 建议必选
client.id 附着在每个请求的后面,用于标识请求是从什么地方发送过来的
connections.max.idle.ms 连接空闲时间超过过久自动关闭(单位毫秒) 540000
linger.ms 数据在缓冲区中保留的时长,0表示立即发送为了减少网络耗时,需要设置这个值太大可能容易导致缓冲区满,阻塞消费者太小容易频繁请求服务端 0
max.block.ms 最大阻塞时长 60000
max.request.size 请求的最大字节数,该值要比batch.size大不建议去更改这个值,如果设置不好会导致程序不报错,但消息又没有发送成功 1048576
partitioner.class 分区类,可以自定义分区类,实现partitioner接口 默认是哈希值%partitions
receive.buffer.bytes socket的接收缓存空间大小,当阅读数据时使用 32768
request.timeout.ms 等待请求响应的最大时间,超时则重发请求,超过重试次数将抛异常 3000
send.buffer.bytes 发送数据时的缓存空间大小 131072
timeout.ms 控制server等待来自followers的确认的最大时间 30000
max.in.flight.requests.per.connection kafka可以在一个connection中发送多个请求,叫作一个flight,这样可以减少开销,但是如果产生错误,可能会造成数据的发送顺序改变。 5
metadata.fetch.timeout.ms 从ZK中获取元数据超时时间比如topic\host\partitions 60000
metadata.max.age.ms 即使没有任何partition leader 改变,强制更新metadata的时间间隔 300000
metric.reporters 类的列表,用于衡量指标。实现MetricReporter接口,将允许增加一些类,这些类在新的衡量指标产生时就会改变。JmxReporter总会包含用于注册JMX统计 none
metrics.num.samples 用于维护metrics的样本数 2
metrics.sample.window.ms metrics系统维护可配置的样本数量,在一个可修正的window size。这项配置配置了窗口大小,例如。我们可能在30s的期间维护两个样本。当一个窗口推出后,我们会擦除并重写最老的窗口 30000
reconnect.backoff.ms 连接失败时,当我们重新连接时的等待时间。这避免了客户端反复重连 10
retry.backoff.ms 在试图重试失败的produce请求之前的等待时间。避免陷入发送-失败的死循环中 100

你可能感兴趣的:(大数据/架构)