1,kafka集群的搭建

1,解压

[root@localhost ~]# tar -zxvf kafka_2.10-0.10.0.1.tgz -C /usr/local

[root@localhost ~]# mv /usr/local/kafka_2.10-0.10.0.1  /usr/local/kafka

这里我们将kafka安装到了/usr/local目录下。

2,配置kafka集群

这里将kafka安装到/usr/local目录下,因此,kafka的主配置文件为/usr/local/kafka/config/server.properties,这里以节点kafkazk1为例,重点介绍一些常用配置项的含义:

broker.id=1

listeners=PLAINTEXT://192.168.0.12:9092

log.dirs=/usr/local/kafka/logs

num.partitions=6

log.retention.hours=60

log.segment.bytes=1073741824

zookeeper.connect=192.168.0.12:2181,192.168.0.13:2181, 192.168.0.14:2181

auto.create.topics.enable=true

delete.topic.enable=true

每个配置项含义如下:

broker.id:每一个broker在集群中的唯一表示,要求是正数。当该服务器的IP地址发生改变时,broker.id没有变化,则不会影响consumers的消息情况。

listeners:设置kafka的监听地址与端口,可以将监听地址设置为主机名或IP地址,这里将监听地址设置为IP地址。

log.dirs:这个参数用于配置kafka保存数据的位置,kafka中所有的消息都会存在这个目录下。可以通过逗号来指定多个路径, kafka会根据最少被使用的原则选择目录分配新的parition。需要注意的是,kafka在分配parition的时候选择的规则不是按照磁盘的空间大小来定的,而是根据分配的 parition的个数多小而定。

num.partitions:这个参数用于设置新创建的topic有多少个分区,可以根据消费者实际情况配置,配置过小会影响消费性能。这里配置6个。

log.retention.hours:这个参数用于配置kafka中消息保存的时间,还支持log.retention.minutes和 log.retention.ms配置项。这三个参数都会控制删除过期数据的时间,推荐使用log.retention.ms。如果多个同时设置,那么会选择最小的那个。

log.segment.bytes:配置partition中每个segment数据文件的大小,默认是1GB,超过这个大小会自动创建一个新的segment file。

zookeeper.connect:这个参数用于指定zookeeper所在的地址,它存储了broker的元信息。 这个值可以通过逗号设置多个值,每个值的格式均为:hostname:port/path,每个部分的含义如下:

       hostname:表示zookeeper服务器的主机名或者IP地址,这里设置为IP地址。

       port: 表示是zookeeper服务器监听连接的端口号。

       /path:表示kafka在zookeeper上的根目录。如果不设置,会使用根目录。

auto.create.topics.enable:这个参数用于设置是否自动创建topic,如果请求一个topic时发现还没有创建, kafka会在broker上自动创建一个topic,如果需要严格的控制topic的创建,那么可以设置auto.create.topics.enable为false,禁止自动创建topic。

delete.topic.enable:在0.8.2版本之后,Kafka提供了删除topic的功能,但是默认并不会直接将topic数据物理删除。如果要从物理上删除(即删除topic后,数据文件也会一同删除),就需要设置此配置项为true。

启动:

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

 

3,kafka集群基本命令操作

3-1,Kafka的启动:

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

 

3-2,创建topic,指定1个副本,3个分区

[root@zk3_kafka3 ~]# /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181 --replication-factor 1 --partitions 3 --topic mytopic

Created topic "mytopic".

[root@zk3_kafka3 ~]#

3-3,查看topic的属性的信息

[root@zk3_kafka3 ~]# /usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper 192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181 --topic mytopic

Topic:mytopic       PartitionCount:3   ReplicationFactor:1      Configs:

       Topic: mytopic      Partition: 0     Leader: 2 Replicas: 2     Isr: 2

       Topic: mytopic      Partition: 1     Leader: 3 Replicas: 3     Isr: 3

       Topic: mytopic      Partition: 2     Leader: 1 Replicas: 1     Isr: 1

[root@zk3_kafka3 ~]#

3-4,查看kafka集群存在的topic的列表

[root@zk3_kafka3 ~]# /usr/local/kafka/bin/kafka-topics.sh  --zookeeper 192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181 --list

mytopic

[root@zk3_kafka3 ~]#

3-5,生产消息

[root@zk3_kafka3 ~]# /usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.0.11:9092,192.168.0.12:9092,192.168.0.13:9092 --topic mytopic

>this is a test1

>this is a test2

3-6,消费消息

[root@zk3_kafka3 ~]# /usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper 192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181 --topic mytopic

从头开始消费:

[root@zk3_kafka3 ~]# /usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper 192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181 --topic mytopic --from-beginning

3-7,删除topic

[root@zk3_kafka3 ~]# /usr/local/kafka/bin/kafka-topics.sh --zookeeper 192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181 --delete --topic mytopic

Topic mytopic is marked for deletion.

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

[root@zk3_kafka3 ~]#

3-8,创建消费者,用kafka-console-consumer.sh创建消费者,并指定其所在的消费组为group_mytest

[root@master bin]# ./kafka-console-consumer.sh --bootstrap-server master:9092 --topic mytest --consumer-property group.id=group_mytes

 

posted @ 2020-05-05 10:38  pwcc  阅读(231)  评论(0)    收藏  举报