Step 1: 下载代码
> tar -xzf kafka_2. 11 - 1.0 . 0 .tgz
> cd kafka_2. 11 - 1.0 . 0
|
Step 2: 启动服务器(先保证Zookeeper已经启动)
> bin/kafka-server-start.sh config/server.properties
[ 2013 - 04 - 22 15 : 01 : 47 , 028 ] INFO Verifying properties (kafka.utils.VerifiableProperties)
[ 2013 - 04 - 22 15 : 01 : 47 , 051 ] INFO Property socket.send.buffer.bytes is overridden to 1048576 (kafka.utils.VerifiableProperties)
...
|
Step 3: 创建一个Topic
让我们创建一个名为“test”的Topic,他有一个分区和一个副本:
> bin/kafka-topics.sh --create --zookeeper localhost: 2181 --replication-factor 1 --partitions 1 --topic test
|
现在我们可以运行List(列表)命令来查看这个Topic:
> bin/kafka-topics.sh --list --zookeeper localhost: 2181
test
|
或者可以配置为Topic自动创建模式
Step 4:发送一些消息
Kafka自带一个命令行客户端,它从文件或者标准输入中获取输入,并将其作为message(消息)发送到Kafka集群。
默认情况下将作为单独的message发送。运行Producer,然后在控制台输入一些消息以发送到服务器。
> bin/kafka-console-producer.sh --broker-list localhost: 9092 --topic test
This is a message
This is another message
|
Step 5:启动一个consumer:
Kafka还有一个命令行consumer(消费者),将消息转存到标准的输出。
> bin/kafka-console-consumer.sh --bootstrap-server localhost: 9092 --topic test --from-beginning
This is a message
This is another message
|
上述操作均为在单节点测试,现在开始在集群上操作(扩展至三个节点)。
Step 6:设置多Agent集群
首先为每个代理创建一个配置文件
> cp config/server.properties config/server- 1 .properties
> cp config/server.properties config/server- 2 .properties
|
分别编辑几个节点的配置文件:
config/server- 1 .properties:
broker.id= 1 # 这里的broker.id属性是集群中每个节点的名称,这一名称是唯一且永久的。我们必须修改端口与日志目录。
listeners=PLAINTEXT: //:9093
log.dir=/tmp/kafka-logs- 1
config/server- 2 .properties:
broker.id= 2
listeners=PLAINTEXT: //:9094
log.dir=/tmp/kafka-logs- 2
|
修改配置文件后分别启动几个节点:
> bin/kafka-server-start.sh config/server- 1 .properties &
...
> bin/kafka-server-start.sh config/server- 2 .properties &
...
|
现在创建副本为3的新topic:
> bin/kafka-topics.sh --create --zookeeper localhost: 2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
|
启动后,并创建Topoc,我们可以通过describe来查看状态:
> bin/kafka-topics.sh --describe --zookeeper localhost: 2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount: 1 ReplicationFactor: 3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 1 , 2 , 0 Isr: 1 , 2 , 0
|
其中上面的
- leader事负责给定分区所有读写操作的节点。每个节点都是随机选择的部分分区的领导者。
- replicas是复制分区日志的节点列表,不管这些节点是leader还是仅仅活着。
- isr是一组同步replicas,是replicas列表的子集,他活着并被指定到leader。
其中leader是主题分区的唯一领导者。