prollerweg 发表于 2017-5-23 15:15:25

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]
查看完整版本: kafka quick start