kafka quick start
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写kafka是基于zookeeper的,在启动kafka之前要先启动zookeeper,kafka默认自带zookeeper,不需要自带的可以自行安装。
1.下载安装
官网下载,解压到 /usr/local下
shifulong kafka_2.9.1-0.8.2.2$ pwd
/usr/local/kafka_2.9.1-0.8.2.2
shifulong kafka_2.9.1-0.8.2.2$ ll
total 32
drwxr-xr-x@ 8 shifulongstaff 272 10 12 10:37 ./
drwxrwxr-x 23 root admin 782 10 12 10:17 ../
-rw-r--r--@ 1 shifulongstaff1135893 09:34 LICENSE
-rw-r--r--@ 1 shifulongstaff 16293 09:34 NOTICE
drwxr-xr-x@21 shifulongstaff 71493 09:44 bin/
drwxr-xr-x@12 shifulongstaff 408 10 15 14:16 config/
drwxr-xr-x@18 shifulongstaff 61293 09:44 libs/
drwxr-xr-x125 shifulongstaff 4250 10 15 14:03 logs/
2.启动zookeeper
shifulong kafka_2.9.1-0.8.2.2$ bin/zookeeper-server-start.sh config/zookeeper.properties
3.启动kafka
由于到单机模拟4台kafka,需要启动4个server
config/server.properties 拷贝四分,做如下修改
broker.id全局唯一,从0开始
config/server.properties://默认配置
broker.id=0
port=9093
log.dir=/tmp/kafka-logs-1
config/server-1.properties:
broker.id=1
port=9093
log.dir=/tmp/kafka-logs-1
config/server-2.properties:
broker.id=2
port=9094
log.dir=/tmp/kafka-logs-2
config/server-3.properties:
broker.id=3
port=9095
log.dir=/tmp/kafka-logs-3
启动4个broker
shifulong kafka_2.9.1-0.8.2.2$ bin/kafka-server-start.sh config/server.properties
shifulong kafka_2.9.1-0.8.2.2$ bin/kafka-server-start.sh config/server-1.properties
shifulong kafka_2.9.1-0.8.2.2$ bin/kafka-server-start.sh config/server-2.properties
shifulong kafka_2.9.1-0.8.2.2$ bin/kafka-server-start.sh config/server-3.properties
4.创建topic
[*]
1.假设实验环境中Kafka集群只有一个broker,log.dirs=/tmp/kafka-logs
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 4 --topic test_single_broker
执行完创建命令后,在/tmp/kafka-logs 目录下 会自动创建四个partition,以topic名称+编号命名(从0开始)
drwxr-xr-x 4 shifulong wheel 136 10 15 14:36 test_single_broker-0/
drwxr-xr-x 4 shifulong wheel 136 10 15 14:36 test_single_broker-1/
drwxr-xr-x 4 shifulong wheel 136 10 15 14:36 test_single_broker-2/
drwxr-xr-x 4 shifulong wheel 136 10 15 14:36 test_single_broker-3/
[*]
2.假设实验环境中Kafka集群只有4个broker,
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic test_multi_broker
/tmp/kafka-logs 目录下
drwxr-xr-x 4 shifulong wheel 136 10 15 14:43 test_multi_broker-2/
/tmp/kafka-logs-1 目录下
drwxr-xr-x 4 shifulong wheel 136 10 15 14:43 test_multi_broker-3/
/tmp/kafka-logs-2 目录下
drwxr-xr-x 4 shifulong wheel 136 10 15 14:43 test_multi_broker-0/
drwxr-xr-x 4 shifulong wheel 136 10 15 14:43 test_multi_broker-4/
/tmp/kafka-logs-3 目录下
drwxr-xr-x 4 shifulong wheel 136 10 15 14:43 test_multi_broker-1/
上面的测试证明了如下问题
在集群环境中通一个topic的多个partition的均匀的在每个broker上创建,
[*]
3.多broker 并且 replication-factor > 1 的情况
与上面的例子不同的是,--replication-factor 2的参数是2(创建1个副本)
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 5 --topic test_multi_replication_topic
/tmp/kafka-logs
drwxr-xr-x 4 shifulong wheel 136 10 15 14:54 test_multi_repli_topic-2/
drwxr-xr-x 4 shifulong wheel 136 10 15 14:54 test_multi_repli_topic-3/
/tmp/kafka-logs-1
drwxr-xr-x 4 shifulong wheel 136 10 15 14:54 test_multi_repli_topic-0/
drwxr-xr-x 4 shifulong wheel 136 10 15 14:54 test_multi_repli_topic-3/
/tmp/kafka-logs-2
drwxr-xr-x 4 shifulong wheel 136 10 15 14:54 test_multi_repli_topic-0/
drwxr-xr-x 4 shifulong wheel 136 10 15 14:54 test_multi_repli_topic-1/
/tmp/kafka-logs-3
drwxr-xr-x 4 shifulong wheel 136 10 15 14:54 test_multi_repli_topic-1/
drwxr-xr-x 4 shifulong wheel 136 10 15 14:54 test_multi_repli_topic-2/
可以看到每个partition创建了2此在不同的broker上
并且创建是有一定规律的
有一篇较为详细的博客介绍分配的规则:
Kafka集群partition replication自动分配分析 http://blog.csdn.net/lizhitao/article/details/41778193
5.发消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_multi_replication_topic
6.消费消息
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test_multi_replication_topic --from-beginning
页:
[1]