「kafka」1.1 环境安装与配置

259 阅读3分钟

JDK环境

Zookeeper环境的配置

kafka依赖Zookeeper来实施对元数据信息的管理,包括集群,broker,主题,分区等

step1:

在官网下载对应的安装包 zookeeper.apache.org/releases.ht…

step2:

创建环境目录(对应dataDir的配置)

~ mkdir /Users/user/Documents/data/zoo/zk1
~ mkdir /Users/user/Documents/data/zoo/zk2
~ mkdir /Users/user/Documents/data/zoo/zk3

#新建myid文件
~ echo "1" > /Users/user/Documents/data/zoo/zk1/myid
~ echo "2" > /Users/user/Documents/data/zoo/zk2/myid
~ echo "3" > /Users/user/Documents/data/zoo/zk3/myid

复制 conf的zoo_sample.cfg

cp zoo_sample.cfg zoo1.cfg

(1) 修改dataDir,clientPort
(2) 增加集群的实例 server.X 其中X表示每个目标中的myid的值

zoo1.cfg :

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/user/Documents/data/zoo/zk1
clientPort=2191
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
admin.serverPort=8888

zoo2.cfg :

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/user/Documents/data/zoo/zk2
clientPort=2192
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
admin.serverPort=8888

zoo3.cfg :

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/user/Documents/data/zoo/zk3
clientPort=2193
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
admin.serverPort=8888

step3:

以上Zookeeper的环境配置好了,开始启动配置。

./zkServer.sh start zoo1.cfg
./zkServer.sh start zoo2.cfg
./zkServer.sh start zoo3.cfg
查看进程: jps
#zk的服务显示为QuorumPeerMain
5422 QuorumPeerMain
5395 QuorumPeerMain
5463 QuorumPeerMain
5494 Jps

查看节点状态:
~ ../bin/zkServer.sh status zoo1.cfg
JMX enabled by default Using config: /home/conan/toolkit/zookeeper345/bin/../conf/zk1.cfg
Mode: follower

~ ../bin/zkServer.sh status z002.cfg
JMX enabled by default Using config: /home/conan/toolkit/zookeeper345/bin/../conf/zk2.cfg
Mode: leader

~ ../bin/zkServer.sh status zk3.cfg
JMX enabled by default Using config: /home/conan/toolkit/zookeeper345/bin/../conf/zk3.cfg
Mode: follower

我们可以看到zk2是leader,zk1和zk3是follower

Kafka环境的配置

step1: 下载kafka的安装包

step2: 复制多份config目录下的server.properties

修改配置:

  • broker.id = 0 broker的编号,每个集群中的broker编号要设置不同
  • listeners=PLAINTEXT://:9092 broker对外提供的服务入口地址
  • log.dirs=/tmp/kafka-logs/kafka1 存放消息日志文件的地址
  • zookeeper.connect=localhost:2191,localhost:2192,localhost:2193 zk集群地址

step3: 启动

bin/kafka-server-start.sh config/server01.properties
bin/kafka-server-start.sh config/server02.properties
bin/kafka-server-start.sh config/server03.properties

如果需要后台处理:

bin/kafka-server-start.sh -daemon config/server01.properties
或:
bin/kafka-server-start.sh config/server01.properties &

使用 jps 查看相关的进程

step4: 测试:创建topic

bin/kafka-topics.sh --zookeeper localhost:2191 --create --topic topic-demo --replication-factor 3 --partitions 4

-- zookeeper 指定kafka所连接的zookeeper服务地址
-- topic 需要创建的主题名称
-- replication-factor 副本因子
-- partitions 分区的个数
-- create 创建主题的动作指令

step4: 测试:查看已经创建的topic

bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic topic-demo

step5: 测试:重新打开一个shell窗口进行消费消息

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-demo

-- bootstrap-server 指定连接的kafka集群地址 -- topic 指定需消费者订阅的主题

step6: 测试:重新打开一个shell窗口进行发送消息

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-demo

-- broker-list 指定连接的kafka集群地址 -- topic 指定需发送者发送消息的主题


tips :

(1) 写一个脚本,同时启动三个zookeeper服务

赋予权限:chmod +x start-zookeeper-three.sh

(2) zookeeper的一些基本的命令

  • 开启服务 : ./zkServer.sh start zoo1.cfg
  • 开启服务查看具体信息 : ./zkServer.sh start-foreground zoo1.cfg
  • 查看服务状态 : ./zkServer.sh status zoo1.cfg
  • 关闭服务 : ./zkServer.sh stop zoo1.cfg
  • 打开客户端 : sh zkCli.sh
  • 创建一个节点 : create [-s] [-e] path data cal —— > create /zk-book 123 (创建一个叫做/zk-book的节点,并且节点的数据内容是123)
  • 读取数据 : get path [watch] — — > get /zk-book
  • 更新数据 : set path data [version] — — > set /zk-book 456 (版本号会更新)
  • 删除数据 : delete path [version] — — > delete /zk-book