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 shifulong  staff    272 10 12 10:37 ./
drwxrwxr-x   23 root       admin    782 10 12 10:17 ../
-rw-r--r--@   1 shifulong  staff  11358  9  3 09:34 LICENSE
-rw-r--r--@   1 shifulong  staff    162  9  3 09:34 NOTICE
drwxr-xr-x@  21 shifulong  staff    714  9  3 09:44 bin/
drwxr-xr-x@  12 shifulong  staff    408 10 15 14:16 config/
drwxr-xr-x@  18 shifulong  staff    612  9  3 09:44 libs/
drwxr-xr-x  125 shifulong  staff   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
 

相关推荐