异想天开

What's the true meaning of light, Could you tell me why

kafka部署以及测试

日期:2019-03-07 17:17:54
  
最后更新日期:2019-03-07 18:14:09
学习kafka的时候,先学会部署,从感性角度对kafka有一个理解。
1. 安装standalone模式zookeeper
单机模式,一个zookeeper server
a. 将zookeeper-3.4.12.tar.gz解压到指定目录
b. 拷贝默认配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg
主要修改配置
[code lang="cpp"]
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zhuangbian/test_kafka/zoo_data/zk0/data/
dataLogDir=/data/zhuangbian/test_kafka/zoo_data/zk0/log/
clientPort=2181
[/code]
主要修改dataDir和dataLogDir。
c.启动
cd bin/
./zkServer.sh start
测试zookeeper
zkCli.sh -server localhost:2181
输入help命令,对zookeeper进行set path, get path等操作


2. 单机部署多个zookeeper server
将前面解压的包,拷贝三份zk0,zk1,zk2。修改conf/zoo.cfg配置文件为:
[code lang="cpp"]
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zhuangbian/test_kafka/zoo_data/zk0/data/
dataLogDir=/data/zhuangbian/test_kafka/zoo_data/zk0/log/
clientPort=2181
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
[/code]
修改对应的dataDir,dataLogDir,clientPort配置。
server.X=A:B:C, 其中X表示节点的编号,A表示机器ip,B表示交换消息的端口,C表示选举leader的端口
ticktime 表示zookeeper使用基本时间单位,毫秒
initLimit 表示leader与follower最长的心跳时间
syncLimit 表示leader与follower应答的最长时间
同时将zookeeper对应的data目录建一个myid文件,内容为server的编号。
如/data/zhuangbian/test_kafka/zoo_data/zk0/data/myid文件写入0
分别在zookeeper的bin目录,查看server的角色
./zkServer.sh status

3. standalone模式kafka
a. 将kafka_2.10-0.8.2.0.tgz解压
b. 修改配置,kafka最为重要三个配置依次为:broker.id、log.dir、zookeeper.connect,kafka。表示kafka集群broker id, 日志目录和zookeeper集群连接端口
修改zookeeper.connect为前面配置的zookeeper单机集群
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
启动kafka
bin/kafka-server-start.sh config/server.properties &

4. 单机kafka集群模式
a. 将kafka目录拷贝三份
b. 修改broker.id以及broker.port和log.dirs配置
c. 启动另外两台kafka

创建topic
bin/kafka-topics.sh --create --topic topic_1 --partitions 3 --replication-factor 3 \--zookeeper localhost:2181
查看创建topic
[code lang="cpp"]
./rdkafka_example -b 127.0.0.1:9992 -L
3 brokers:
broker 0 at kafka_video:9992
broker 1 at kafka_video:9993
broker 2 at kafka_video:9994
1 topics:
topic "topic_1" with 3 partitions:
partition 2, leader 0, replicas: 0,1,2, isrs: 0,1,2
partition 1, leader 2, replicas: 2,0,1, isrs: 2,0,1
partition 0, leader 1, replicas: 1,2,0, isrs: 1,2,0
[/code]