美文网首页
kafka集群常用操作命令

kafka集群常用操作命令

作者: mysimplebook | 来源:发表于2019-10-30 17:29 被阅读0次

    访问远程kafka集群

    如查看远程kafka集群的消息内容,

    [root@localhost bin]# ./kafka-console-consumer.sh--zookeeper 10.255.209.37:2181 --topic risk-black --from-beginning

    参数与查看本地时一样,只需zookeeper地址换成远程zookeeper地址即可。

    查看kafka topic列表

    使用--list参数,如

    [root@localhost bin]#  ./kafka-topics.sh --zookeeper10.255.209.36:2181 --list

    risk-black

    risk-device

    risk-hn

    topic的创建

    由于消息存放在topic中的,因此我们先手动创建topic。例如创建2个topic名称分别为news、music,partitions数量分别为2和3,

    [root@localhost kafka_2.9.1-0.8.2.1]# bin/kafka-topics.sh--create --zookeeper localhost:2181 --replication-factor 1 --partitions 2--topic news

    Created topic "news".

    [root@localhost kafka_2.9.1-0.8.2.1]#bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions3 --topic music

    Created topic "music".

    其中,replication-factor 指定了副本数(主副本和从副本之和),partitions指定了分区数。副本数不能大于kafka实例节点数,否则报错:副本数大于节点数,如

    [root@localhost kafka_2.9.1-0.8.2.1]#  bin/kafka-topics.sh --create --zookeeperlocalhost:2181 --replication-factor 5 --partitions 3 --topictest-replicate-topic2

    Error while executing topic command replicationfactor: 5 larger than available brokers: 3

    kafka.admin.AdminOperationException: replicationfactor: 5 larger than available brokers: 3

    …..

    这时我们可以在数据文件存储根目录(数据文件存储根目录在Kafka broker中server.properties文件配置(参数log.dirs=xxx)中指定)下看到如下几个文件

    [root@localhost kafka-logs]# ll

    total 28

    drwxr-xr-x 2 root root 4096 Jun  6 14:38 music-0

    drwxr-xr-x 2 root root 4096 Jun  6 14:38 music-1

    drwxr-xr-x 2 root root 4096 Jun  6 14:38 music-2

    drwxr-xr-x 2 root root 4096 Jun  6 14:37 news-0

    drwxr-xr-x 2 root root 4096 Jun  6 14:37 news-1

    消息发送时都被发送到一个topic,其本质就是一个目录,在Kafka文件存储中,同一个topic下有多个不同partition,每个partition为一个目录,partiton命名规则为topic名称+有序序号,第一个partiton序号从0开始,序号最大值为partitions数量减1。而topic由是由一些Partition组成,而每个partition的文件夹中又有多组小文件(segment file)组成。segment file由2大部分组成,分别为index file和log file,此2个文件一一对应,成对出现,后缀".index"和“.log”分别表示为segment索引文件、数据文件。如

    [root@localhost kafka-logs]# ll news-0

    total 0

    -rw-r--r-- 1 root root 10485760 Jun  6 14:37 00000000000000000000.index

    -rw-r--r-- 1 root root        0 Jun 6 14:37 00000000000000000000.log

    查看主题详细信息

           使用describe命令查看指定主题的详细信息,如

    [root@localhost bin]# ./kafka-topics.sh --describe--zookeeper localhost:2181  --topicnews                                              

    Topic:news     PartitionCount:2       ReplicationFactor:1     Configs:

           Topic: news     Partition: 0    Leader: 0       Replicas: 0     Isr: 0

           Topic: news     Partition: 1    Leader: 0       Replicas: 0     Isr: 0

    [root@localhost

    bin]#

           第一个行显示所有partitions的一个总结,以下每一行给出一个partition中的信息。

           每个分区都有5个属性。Topic:主题名称;partition:分区编号,从0开始;leader:当前分区负责读写的节点,只有主副本才会接收消息的读写;replicas:分区的复制节点(主副本和从副本)列表,默认只有一个,即主副本;Isr:同步状态的副本,是replicas的一个子集。

    删除topic

           使用delete选项,如

    [root@localhost bin]# ./kafka-topics.sh --delete--zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic news

    Topic news is marked for deletion.

    Note: This will have no impact ifdelete.topic.enable is not set to true.

           可见,这并没有完全删除topic,

    我们需要在server.properties中增加下面一句

    delete.topic.enable=true

    首先停止所有的consumer和producer,删除kafka-logs下的所有文件,然后重启kafka服务即可。如

    [root@localhost bin]# ./kafka-server-stop.sh

    [root@localhost bin]# ./kafka-server-start.sh  ../config/server.properties

    生产者-向kafka写数据

           开发者可以使用kafka内置的客户端API开发kafka应用程序。除了内置的客户端外, Kafka 还提供了二进制连接协议,也就是说,我们直接向 Kafka 网络端口发送适当的字节序列,就可以实现从 Kafka 读取消息或往 Katka 写入消息。还有很多用其他语言实现的 Kafka 客户端,比如 C++、 Python 、 Go 语言等,它们都实现了 Kafka 的连接协议,使得 Kafka不仅仅局限于在 Java 里使用。这些客户端不属于 Katka 项目,不过 Kafka 项目 wiki 上提供了一个清单,列出了所有可用的客户端。

           还有一种方法是使用kafka提供的控制台生产者脚本kafka-console-producer.sh。

    向topic写消息,启动一个控制台的生产者producer  (指定broker topic) 输入内容回车,如

    [root@localhost kafka_2.9.1-0.8.2.1]#bin/kafka-console-producer.sh --broker-list localhost:9092 --topic news

    [2019-08-08 19:03:56,943] WARN Property topic isnot valid (kafka.utils.VerifiableProperties)

    test1

    test2

    test3

    test4

    1test

    2test

     

    相关文章

      网友评论

          本文标题:kafka集群常用操作命令

          本文链接:https://www.haomeiwen.com/subject/tthavctx.html