kafka系列(六)---kafka安装配置与简单测试

摘要

前边转发的五篇文章,作者对kafka的设计作了很多介绍,文章写的时间也比较早,现在kafka最新稳定版本已经是0.10.1.0。设计思路没有改变,只是对前文中提到的改进的方面已做了改进。
本文主要内容是kafka启动配置,以及一些简单的测试。 大部分内容来自kafka 0.10.1.0的官方文档

快速启动

下载解压

大家可点击下边链接下载最新稳定版0.10.1.0
https://www.apache.org/dyn/closer.cgi?path=/kafka/0.10.1.0/kafka_2.11-0.10.1.0.tgz
也可访问
http://kafka.apache.org/downloads 选择其他版本

>tar -xzf kafka_2.11-0.10.1.0.tgz
>cd kafka_2.11-0.10.1.0

配置启动一个单节点的kafka服务

kafka启动需要zookeeper支持,请先安装并正确启动zookeeper
http://blog.csdn.net/alphags/article/details/52745822
编辑配置文件
vi config/server.properties
修改

 zookeeper.connect=h3:2181,h4:2181,h5:2181

(备注:我这里的zookeeper是安装在主机h3,h4,h5上的,此处配置要根据实际机器情况自定)

运行以下命令启动kafka

>bin/kafka-server-start.sh -daemon config/server.properties

创建一个topic

>bin/kafka-topics.sh --create --zookeeper h3:2181 --replication-factor 1 --partitions 1 --topic test

通过下面命令可以看到所有topic列表

> bin/kafka-topics.sh --list --zookeeper localhost:2181
test

开启一个producer测试发送信息

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message

开启一个consumer接收信息

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
This is a message
This is another message

启动多节点kafka服务

在上边的快速启动中我们介绍了一个单节点的kafka服务的启动以及使用方法,下面我们介绍如何启动多个节点的kafka服务集群,我们仍在一台机器上测试。
我们在config目录下复制两个新的文件server.properties文件,并修改文件内容

> cp config/server.properties config/server-1.properties
> cp config/server.properties config/server-2.properties
 >vi config/server-1.properties:
    broker.id=101
    listeners=PLAINTEXT://:9093
    log.dir=/tmp/kafka-logs-1

>vi config/server-2.properties:
    broker.id=102
    listeners=PLAINTEXT://:9094
    log.dir=/tmp/kafka-logs-2

broker.id是kafka节点在集群中的唯一标识,互不相同,我们需要修改log.dir,因为我们在同一台机器上运行,不同kafka节点的log.dir 不能相同。然后我们就可以启动这两个节点了

> bin/kafka-server-start.sh config/server-1.properties &
...
> bin/kafka-server-start.sh config/server-2.properties &
...

“&”是让kafka启动后后台运行,这样我们就不需要再启动一个终端了。现在我们于创建一个topic这次让replication-factor 是2

> bin/kafka-topics.sh --create --zookeeper h3:2181 --replication-factor 2  --partitions 1 --topic my-replicated-topic

然后我们运行”describe topics”查看一下每个节点都有哪些内容

>bin/kafka-topics.sh --describe --zookeeper h3:2181 --topic my-replicated-topic
Topic:my-replicated-topic       PartitionCount:1        ReplicationFactor:2     Configs:
 Topic: my-replicated-topic      Partition: 0    Leader: 101     Replicas: 101,102       Isr: 101,102

每一行是一些简要信息,partition有一个,ReplicationFactor 2个
下边每一行都是这个topic在每个partition内的情况,因为我们只有一个partition所以下边只有一行。
leader 是表示所有该Partiton(partition 0)的读写都走这个节点(101,前边server-1.properties中配置的broker.id=101)
我们看一下刚才的创建的test topic 以示区别

./kafka-topics.sh --describe --zookeeper h3:2181 --topic test
Topic:test      PartitionCount:1        ReplicationFactor:1     Configs:
 Topic: test     Partition: 0    Leader: 0     Replicas: 0   Isr: 0

这里leader 0,是因为我们创建test topic时,server.properties中 broker.id=0,而且是只有这一个节点
现在我们发送消息做个测试

> bin/kafka-console-producer.sh --broker-list localhost:9093 --topic my-replicated-topic
...
my test message 1
my test message 2
^C

然后我们消费这些信息

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --from-beginning --topic my-replicated-topic
...
my test message 1
my test message 2
^C

接下来我们kill一个node 测试其容错性

> ps aux | grep server-1.properties
7564 ttys002    0:15.91 /System/Library/Frameworks/JavaVM.framework/Versions/1.8/Home/bin/java...
> kill -9 7564

我们可以看到leader已变成了102

./kafka-topics.sh --describe --zookeeper h3:2181 --topic my-replicated-topic
Topic:my-replicated-topic       PartitionCount:1        ReplicationFactor:2     Configs:
        Topic: my-replicated-topic      Partition: 0    Leader: 102     Replicas: 101,102       Isr: 102

消息依然可以正常消费

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --from-beginning --topic my-replicated-topic
...
my test message 1
my test message 2
^C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iblks

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值