kafka集群配置和使用

1.在第一台主机中下载,解压

2.修改配置

进入安装目录,修改server.properties文件

vim config/server.properties

修改如下属性,除id外,其他每台主机一致:

broker.id=0   //唯一标识,每台主机不一样
log.dirs=/home/software/kafka_2.11-1.0.0/tmp  //数据存放地址
zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181 //集群ip

语义配置:(可选)

acks = 0 //至多一次语义
acks =1 或2或3 //至少一次语义
---
acks =1
enable.idempotence =true //精确一次语义

3.发送到其他主机

scp -r kafka_2.11-1.0.0 hadoop02:/home/software/
scp -r kafka_2.11-1.0.0 hadoop03:/home/software/

4.启动

先启动zookeeper集群,已经在三台主机上配置好了zookeeper集群,启动:
在各台主机上进入zookeeper目录,分别启动zk:

./bin/zkServer.sh start
./bin/zkServer.sh status //查看zk状态

在各台主机上进入kafka目录,分别启动kafka:

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

启动结果为:

[2020-07-15 10:07:25,145] INFO Kafka version : 1.0.0 (org.apache.kafka.common.utils.AppInfoParser)
[2020-07-15 10:07:25,145] INFO Kafka commitId : aaa7af6d4a11b29d (org.apache.kafka.common.utils.AppInfoParser)
[2020-07-15 10:07:25,147] INFO [KafkaServer id=2] started (kafka.server.KafkaServer)

kafka占据了前台,要使用主机,需要打开新终端

5.在zk上查看kafka信息

在新打开的终端上,进入zk目录,

./bin/zkCli.sh //进入zk
ls /brokers //查看kafka集群信息

[zk: localhost:2181(CONNECTED) 1] ls /brokers
[ids, topics, seqid]

ls /brokers/ids //查看ids

[zk: localhost:2181(CONNECTED) 2] ls /brokers/ids
[0, 1, 2]

6.使用kafka

6.1知识点

  • 1.生产数据必须指定一个主题
  • 2.主题(topic)是由用户自己创建,主题可以有多个,kafka初始没有任何主题
  • 3.主题的属性:
    1)主题名
    2)分区数 partition,至少一个,可以大于服务器数量。服务器分布式存储主题
  • 数据存储在数据目录(service.properties中配置过)中主题名文件下的.log文件中(如:tmp/enbook-0/00000000000000000000.log)
    3)副本数 replication 副本数不能大于服务器数,有多个副本时,副本中会选出主从(对于副本而言,服务器之间是对等的)
  • 4.消费者:组间共享消费,组内以分区为单位竞争消费
  • 5.一个分区逻辑上就是一个队列
  • 6.数据存储在log文件中,无论消费与否都不清除,文件清除机制可以通过设置server.properties来设置
log.retention.hours=168 //清理周期
log.segment.bytes=1073741824 //达到一定大小清理
  • 7.元数据存储在zk上

6.2操作

进入kafka目录,创建主体

./bin/kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 1 --topic enbook //创建主题

Created topic "enbook".

./bin/kafka-topics.sh --list --zookeeper hadoop01:2181 //查看主题

enbook

ls tmp/ //在数据目录查看是否有之前创建的主题,可能在集群中任意一个主机

cleaner-offset-checkpoint  log-start-offset-checkpoint  recovery-point-offset-checkpoint
enbook-0                   meta.properties              replication-offset-checkpoint

./bin/kafka-console-producer.sh --broker-list hadoop01:9092,hadoop02:9092,hadoop03:9092 --topic enbook //启动生产者
hello kafka //在shell中发送数据
cat tmp/enbook-0/00000000000000000000.log //查看文件

C��Ƶ瀳PZ+r�sPZ+rÿÿÿÿÿÿÿÿÿÿÿÿÿÿ�"��hello kaf�C�ڲ¢:�sPZ_�sPZ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ�"��hello kafka�=�x�ǁsPZցsPZٿÿÿÿÿÿÿÿÿÿÿÿÿÿ���
dfdsf�=�ցsPZÿ΁sPZÿѿÿÿÿÿÿÿÿÿÿÿÿÿÿ���

./bin/kafka-console-consumer.sh --zookeeper hadoop01:2181 --topic enbook --from-beginning //启动消费者来消费数据

Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
hello kafa
hello kafka
dfdsf
ewqew
test

你可能感兴趣的:(kafka集群配置和使用)