kafka shell简单使用

摘要:
Kafka通过分区策略为集群中的代理分配不同的分区。通常,它们被分配给不同的经纪人。当只有一个代理时,所有分区都分配给该代理。分区的数量越高,在某种程度上,消息处理的吞吐量就越高。因为kafka基于文件读取和写入文件,它还需要打开更多的文件句柄,这也增加了性能开销。因此,一般来说,卡夫卡不能有太多的分区。复制角色用于设置主题的副本数量。

将kafka添加到环境变量中

vim /etc/profile
export KAFKA_HOME=/opt/iDataFusion/kafka
export PATH=$PATH:$KAFKA_HOME/bin
source /etc/profile

创建topic:

--create: 指定创建topic动作
--topic:指定新建topic的名称
--zookeeper: 指定kafka连接zk的连接url,该值和server.properties文件中的配置项{zookeeper.connect}一样
--config:指定当前topic上有效的参数值,参数列表参考文档为: Topic-level configuration
--partitions:指定当前创建的kafka分区数量,默认为1个
--replication-factor:指定每个分区的复制因子个数,默认1个

kafka-topics.sh --create --zookeeper localhost:2181/kafka --replication-factor 1 --partitions 1 --topic my-kafka-topic

在创建Topic的时候,有两个参数是需要填写的,那就是partions和replication-factor。

partions
  主题分区数。kafka通过分区策略,将不同的分区分配在一个集群中的broker上,一般会分散在不同的broker上,当只有一个broker时,所有的分区就只分配到该Broker上。
消息会通过负载均衡发布到不同的分区上,消费者会监测偏移量来获取哪个分区有新数据,从而从该分区上拉取消息数据。
分区数越多,在一定程度上会提升消息处理的吞吐量,因为kafka是基于文件进行读写,因此也需要打开更多的文件句柄,也会增加一定的性能开销。
如果分区过多,那么日志分段也会很多,写的时候由于是批量写,其实就会变成随机写了,随机 I/O 这个时候对性能影响很大。所以一般来说 Kafka 不能有太多的 Partition。

replication-factor
  用来设置主题的副本数。每个主题可以有多个副本,副本位于集群中不同的broker上,也就是说副本的数量不能超过broker的数量,否则创建主题时会失败。

生产者操作:

kafka-console-producer.sh --broker-list localhost:9092 --topic my-kafka-topic

消费者操作:

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-kafka-topic

查看所有topic列表:

kafka-topics.sh --zookeeper localhost:2181 --list

查看指定topic信息:

kafka-topics.sh --zookeeper localhost:2181 --describe --topic my-kafka-topic

控制台向topic生产数据:

kafka-console-producer.sh --broker-list node86:9092 --topic my-kafka-topic

控制台消费topic的数据:

kafka-console-consumer.sh --zookeeper localhost:2181 --topic my-kafka-topic --from-beginning
增加topic分区数(Kafka分区数量只允许增加,不允许减少)
为topic my-kafka-topic 增加10个分区
kafka-topics.sh --zookeeper localhost:2181 --alter --topic my-kafka-topic --partitions 10

删除topic(确定后再谨慎使用)

默认情况下Kafka的Topic是没法直接删除的,需要进行相关参数配置

kafka-topics.sh --delete --topic test0 --zookeeper ocalhost:2181

Note: This will have no impact if delete.topic.enable is not set to true.## 默认情况下,删除是标记删除,没有实际删除这个Topic;如果运行删除Topic,两种方式:
方式一:通过delete命令删除后,手动将本地磁盘以及zk上的相关topic的信息删除即可
方式二:配置server.properties文件,给定参数delete.topic.enable=true,重启kafka服务,此时执行delete命令表示允许进行Topic的删除

查看topic消费进度

kafka-consumer-groups.sh --bootstrap-server test1:9092 --list
kafka-consumer-groups.sh --bootstrap-server test1:9092 --describe --group groupname

免责声明:文章转载自《kafka shell简单使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Confluence 6 为站点启用匿名用户访问postgresql批量备份和恢复数据表下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

突破SA,,xp_cmdshell恢复终极方法

sql server 2005下开启xp_cmdshell的办法EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;SQL2005开启'OPENROWSET'支持的方法:exec sp_configur...

shell 常用

命令行常用的快捷键: ctrl + c 中断当前命令执行ctrl + w 往回删除一个单词,光标放在最末尾ctrl + u 删除光标以前的字符ctrl + k 删除光标以后的字符ctrl + a 移动光标至的字符头ctrl + e 移动光标至的字符尾ctrl + l 清屏 rename 重命名 rename -n 's/abc/def/' * //针对当前...

shell (7)if 表达式

文件表达式if [ -f file ] 如果文件存在if [ -d … ] 如果目录存在if [ -s file ] 如果文件存在且非空if [ -r file ] 如果文件存在且可读if [ -w file ] 如果文件存在且可写if [ -x file ] 如果文件存在且可执行 整数变量表达式 -ne:(notequal)不相等 -gt:(great...

windows花指令和堆栈溢出原理

1、今天拿到一个exe,用IDA打开后在main的代码如下,想直接F5,报错如下:      细看代码,有两个比较有意思的地方:    第一个红框,JZ和JNZ跳转到同一个地址:0x4010A1+1=0x4010A2    第二个红框,也就是0x4010A1的开始地址是一个call指令,5字节长度;再下一个指令就从0x4010A6开始了;    0x4...

关于delete使用limit的一些注意事项

在使用delete删除记录时,如果表里面存在多条相同的记录,但是此刻你只想删除一条记录,那么limit就派上了用场。但是使用limit的时候得注意: 如图,您如果想着删除第一个名字叫做张三的,如果你这样写: 会报如下错误: 这是什么意思呢?简而言之就是你的sql语句写的有问题,那么问题在哪儿?  主要是limit参数的问题,limit可以接受两个参数...

(转)使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前面的半个小时就会前功尽弃,你非常气愤…… 在Linux下,如果你要执行的shell命令耗时特别长,并且:(1)你的网络不稳定,随时可能断网;或者(2)你在执行了sh...