Kafka 配置
Kafka 和我之前接触的 Flume 非常相识,不过我关心的是它的搭建方式。
环境介绍
软件版本如下:
Program | Version | URL |
---|---|---|
System | CentOS-7-x86_64-Minimal-1810 | TUNA Mirrors |
JAVA | jdk-8u211-linux-x64.tar.gz | Oracle |
ZooKeeper | zookeeper-3.4.5.tar.gz | Apache Archive |
Kafka | kafka_2.11-1.0.0.tgz | Apache Archive |
目标
- 正确启动 Kafka
- 完成 生产者(producer) 配置
- 完成 消费者(consumer) 配置
基础环境配置
参考 Hadoop HA 搭建 目前已完成 ZooKeeper 环境搭建
HostName | broker id | Config Name | IP |
---|---|---|---|
master | 1 | server-1.properties | 192.168.66.128 |
slave1 | 2 | server-2.properties | 192.168.66.129 |
slave2 | 3 | server-3.properties | 192.168.66.130 |
zoo.cfg
zoo.cfg 配置如下
1 | tickTime=2000 |
启动 ZooKeeper
在每台主机上都要执行该命令
1 | zkServer.sh start |
执行完毕后查看他们的运行状态
1 | [root@master ~]# zkServer.sh status |
当有一台主机处于 leader
状态,其他的都处于 follower
时即启动成功
下载解压
1 | curl -O http://archive.apache.org/dist/kafka/1.0.0/kafka_2.11-1.0.0.tgz |
配置
这里我直接就使用我自己,已经安装好的 ZooKeeper
作为服务端不使用 Kafka
自带的 ZooKeeper
,如果你需要使用自带的可以参考以下文档:
编写配置文件
新建 master
配置文件
1 | vi /usr/local/src/kafka/config/server-1.properties |
写入以下内容
1 | broker.id=1 |
新建 slave1
配置文件
1 | vi /usr/local/src/kafka/config/server-2.properties |
写入以下内容
1 | broker.id=2 |
新建 slave2
配置文件
1 | vi /usr/local/src/kafka/config/server-3.properties |
写入以下内容
1 | broker.id=3 |
同步配置
将程序和配置分发到所有主机上
1 | scp /usr/local/src/kafka slave1:/usr/local/src/ |
设置环境变量
1 | vi ~/.bash_profile |
在文件底部新增以下内容
1 | export KAFKA_HOME=/usr/local/src/kafka |
使其生效
1 | source ~/.bash_profile |
运行
在 master
上执行
1 | kafka-server-start.sh /usr/local/src/kafka/config/server-1.properties |
在 slave1
上执行
1 | kafka-server-start.sh /usr/local/src/kafka/config/server-2.properties |
在 slave2
上执行
1 | kafka-server-start.sh /usr/local/src/kafka/config/server-3.properties |
出现类似以下输出内容说明启动成功了
1 | [2019-06-04 19:18:04,467] INFO [KafkaServer id=1] started (kafka.server.KafkaServer) |
创建Topic
在一个新的窗口打开 master
的 shell 执行
1 | kafka-topics.sh --create --zookeeper master:2181 --replication-factor 2 --partitions 1 --topic my-replicated-topic |
–replication-factor 2 #复制两份
–partitions 1 #创建1个分区
–topic #主题为my-replicated-topic
查看所有 topic
1 | kafka-topics.sh --list --zookeeper master:12181 |
应输出
1 | my-replicated-topic |
查看 my-replicated-topic 详细信息
1 | kafka-topics.sh --describe --zookeeper master:2181 --topic my-replicated-topic |
应输出
1 | Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:2 Configs: |
- “leader”是负责给定分区所有读写操作的节点。每个节点都是随机选择的部分分区的领导者。
- “replicas”是复制分区日志的节点列表,不管这些节点是leader还是仅仅活着。
- “isr”是一组“同步”replicas,是replicas列表的子集,它活着并被指到leader。
不知到为啥有两个 Leader ,而且看起来
master
好像离线了一样。感觉应该是我设置--replication-factor 2
导致的,也可以能是我刚刚调试的时候没有把这个topic
删干净导致的
生产者&消费者
在 master
上面执行
1 | kafka-console-producer.sh --broker-list master:9093 --topic my-replicated-topic |
输入任意字符
在 slave2
上面执行
1 | kafka-console-consumer.sh --bootstrap-server master:9093 --from-beginning --topic my-replicated-topic |
看到消息同步出现,即成功。
参考
博客园@Mr.心弦 - Kafka【第一篇】Kafka集群搭建