2019-10-27

Kafka基本操作

1. 查看Topic

--list命令(列举所有主题):

kafka-topics.sh –list –zookeeper server-1:2181,server-2:2181

--describe命令(不指定topic参数则查看所有主题信息,若指定topic参数则查看特定主题的信息):

kafka-topics.sh –describe –zookeeper server-1:2181,server-2:2181

#查看指定主题已覆盖的配置:

Kafka-topics.sh –describe –zookeeper server-1:2181,server-2:2181,server-3:2181–topics-with-overrides–topic config-test

2.创建Topic

命令:

kafka-topics.sh –create–zookeeper server-1:2181,server-2:2181,server-3:2181 --replication-factor 2 –partitions3 –topic kafka-action

此时会在${log.dir}目录下创建相应的分区文件目录,副本分别分布在不同的节点上。

同时登陆ZooKeeper客户端查看所创建的主题元数据信息,登陆ZK之后,“kafka-action”元数据信息如下:

Ls /brokers/topics/kafka-action/partitions

[0,1,2]

ls /brokers/topics/kafka-action

{“version”:1,”partitions”:{“2”:[3,1], “1”:[2,3],”0”:[1,2]}}

注意:

1)创建topic时,主要要指定副本数、分区数等,如果不指定副本和分区数,默认分别创建${num.partitions}个分区数和${default.replcation.factor}个副本。

  2)当生产者向一个还未创建的topic发送消息时,会自动创建该副本,但是前提是:auto.create.topics.enable=true

3. 修改Topic

    当创建一个主题之后,可以通过alter命令对主题进行修改,包括修改主题级别的配置、增加主题分区、修改副本分配方案、修改主题Offset等。

命令:

kafka-topics.sh --alter –zookeeper server-1:2181,server-2:2181,server-3:2181–topic config-test –config max.message.bytes=204800

修改max.message.bytes参数值,某些版本使用kafka-topics.sh脚本修改参数可以成功,但是可能会提示该脚本已过时,在后续版本可能会被移除,推荐使用kafka-configs.sh脚本修改参数。

kafka-topics.sh --alter –zookeeper server-1:2181,server-2:2181,server-3:2181–topic config-test –configsegment.bytes=209715200

修改segment.bytes参数后,可通过topics-with-overrides查看主题config-test已覆盖的配置信息。

删除参数segment.bytes配置:

kafka-topics.sh --alter –zookeeper server-1:2181,server-2:2181,server-3:2181–topic config-test –delete-configsegment.bytes

再次通过topics-with-overrides查看主题config-test已覆盖的配置信息,此时已不包含segment.bytes。

增加分区:

Kafka并不支持减少分区的操作,只能为一个主题增加分区。

假设当前分区为3个,要增加至5个:

kafka-topics.sh --alter –zookeeper server-1:2181,server-2:2181,server-3:2181–topic config-test –partitions 5

4.删除Topic

删除Kafka主题,一般有以下两种方式:

[if !supportLists](1)      [endif]手动删除各节点${log.dir}目录下该主题分区文件夹,同时登录ZK客户端删除待删除主题对应的节点,主题元数据保存在/brokers/topics和/config/topics目录下。

[if !supportLists](2)      [endif]执行kafka-topics.sh脚本进行删除,若希望通过该脚本彻底删除主题,则需要保证在启动Kafka时所加载的server.properties文件中配置delete.topic.enable=true,该配置默认为false。否则执行该脚本并未真正删除主题,而是在ZK的/admin/delete_topics目录下创建一个与待删除主题同名的节点,将该主题标记为删除状态。

5.启动生产者发送消息

启动一个向主题kafka-action发送消息的生产者,同时指定每条消息包含有Key:

Kafka-console-producer.sh –broker-listserver-1:9092,server-2:9092,server-3:9092 –topic kafka-action –property parse.key=true

该命令执行后,控制台等待客户端输入消息。由于没有指定消息Key与消息净荷(payload)之间的分隔符,默认是以制表符分隔。可以通过配置项key.separator指定。

Kafka-console-producer.sh –broker-list server-1:9092,server-2:9092,server-3:9092–topic kafka-action –property parse.key=true –property key.separator=’ ’

在控制台分别输入一批消息,消息key与消息实际数据之间以空格分隔。然后执行以下命令,验证消息是否发送成功。

Kafka-run-class.shkafka.tools.GetOffsetShell –broker-list server-1:9092,server-2:9092,server-3:9092–topic kafka-action –time -1

以上命令用于查看某个主题各分区对应消息偏移量。可以通过partitions参数指定一个或多个分区,多个分区之间以逗号分隔,若不指定则默认查看该主题所有分区;time参数表示查看在指定时间之前的数据,支持-1(latest)、-2(earliest)两个时间选项,默认取值为-1.

执行以上命令输出结果如下,共3列,分别表示主题名、分区编号、消息偏移量:

Kafka-action:2:6

Kafka-action:1:6

Kafka-action:0:4

通过结果信息可知,总共产生了16条消息,3个分区按编号从大到小依次有6条、6条、4条消息。

6.查看消息

Kafka生产的消息以二进制的形式在文件中,为了便于查看消息内容,Kafka提供了一个查看日志文件的工具类kafka.tools.DumpLogSegments.命令如下:

Kafka-run-class.shkafka.tools.DumpLogSegments –files ./././00000000000000.log

7.启动消费者接受消息

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345