kafka介绍及安装测试

1.kafka的下载:
kafka的官网:http://kafka.apache.org/downloads.html

2.kafka的目录介绍:
/bin 操作kafka的可执行脚本,还包含windows下脚本
/config 配置文件所在目录
/libs 依赖库目录
/logs 日志数据目录,目录kafka把server端日志分为5种类型,分为:server,request,state,log-cleaner,controller

3.配置:
配置zookeeper(配置参考http://www.cnblogs.com/wangyangliuping/p/5546506.html

进入kafka安装工程根目录编辑config/server.properties
kafka最为重要三个配置依次为:broker.id、log.dir、zookeeper.connect,kafka server端config/server.properties参数说明和解释如下:server.properties配置属性说明

4.启动kafka:
启动
进入kafka目录,敲入命令 bin/kafka-server-start.sh config/server.properties &
检测2181与9092端口
QuorumPeerMain为对应的zookeeper实例,在2181端口监听

5.单机连通性测试:
启动2个XSHELL客户端,一个用于生产者发送消息,一个用于消费者接受消息。
● 运行producer,随机敲入几个字符,相当于把这个敲入的字符消息发送给队列。
bin/kafka-console-producer.sh –broker-list 192.168.1.181:9092 –topic test
说明:早版本的Kafka,–broker-list 192.168.1.181:9092需改为–zookeeper 192.168.1.181:2181
● 运行consumer,可以看到刚才发送的消息列表。
bin/kafka-console-consumer.sh –zookeeper 192.168.1.181:2181 –topic test –from-beginning
● 注意:
producer,指定的Socket(192.168.1.181+9092),说明生产者的消息要发往kafka,也即是broker
consumer, 指定的Socket(192.168.1.181+2181),说明消费者的消息来自zookeeper(协调转发)
上面的只是一个单个的broker,下面我们来实验一个多broker的集群。

6.搭建一个多个broker的伪集群
刚才只是启动了单个broker,现在启动有3个broker组成的集群,这些broker节点也都是在本机上。
(1)为每一个broker提供配置文件
我们先看看config/server0.properties配置信息:
broker.id=0
listeners=PLAINTEXT://:9092
port=9092
host.name=192.168.1.181
num.network.threads=4
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=5
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=192.168.1.181:2181
zookeeper.connection.timeout.ms=6000
queued.max.requests =500
log.cleanup.policy = delete

● 说明:
broker.id为集群中唯一的标注一个节点,因为在同一个机器上,所以必须指定不同的端口和日志文件,避免数据被覆盖。
在上面单个broker的实验中,为什么kafka的端口为9092,这里可以看得很清楚。
kafka cluster怎么同zookeeper交互的,配置信息中也有体现。
那么下面,我们仿照上面的配置文件,提供2个broker的配置文件:
server1.properties:
broker.id=1
listeners=PLAINTEXT://:9093
port=9093
host.name=192.168.1.181
num.network.threads=4
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs1
num.partitions=5
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=192.168.1.181:2181
zookeeper.connection.timeout.ms=6000
queued.max.requests =500
log.cleanup.policy = delete

server2.properties:
broker.id=2
listeners=PLAINTEXT://:9094
port=9094
host.name=192.168.1.181
num.network.threads=4
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs2
num.partitions=5
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=192.168.1.181:2181
zookeeper.connection.timeout.ms=6000
queued.max.requests =500
log.cleanup.policy = delete

(2)启动所有的broker
命令如下:
bin/kafka-server-start.sh config/server0.properties & #启动broker0
bin/kafka-server-start.sh config/server1.properties & #启动broker1
bin/kafka-server-start.sh config/server2.properties & #启动broker2

查看2181、9092、9093、9094端口
netstat -tunlp|egrep “(2181|9092|9093|9094)”
一个zookeeper在2181端口上监听,3个kafka cluster(broker)分别在端口9092,9093,9094监听。

(3)创建topic
bin/kafka-topics.sh –create –topic topic_1 –partitions 1 –replication-factor 3 –zookeeper localhost:2181
bin/kafka-topics.sh –create –topic topic_2 –partitions 1 –replication-factor 3 –zookeeper localhost:2181
bin/kafka-topics.sh –create –topic topic_3 –partitions 1 –replication-factor 3 –zookeeper localhost:2181

查看topic创建情况:
bin/kafka-topics.sh –list –zookeeper localhost:2181

bin/kafka-topics.sh –describe –zookeeper localhost:2181

(4)模拟客户端发送,接受消息
发送消息:
bin/kafka-console-producer.sh –topic topic_1 –broker-list 192.168.1.181:9092,192.168.1.181:9093,192.168.1.181:9094
接收消息:
bin/kafka-console-consumer.sh –topic topic_1 –zookeeper 192.168.1.181:2181 –from-beginning
需要注意,此时producer将topic发布到了3个broker中,现在就有点分布式的概念了。

(5) kill some broker
kill broker(id=0)
首先,我们根据前面的配置,得到broker(id=0)应该在9092监听,这样就能确定它的PID了。
broker0没kill之前topic在kafka cluster中的情况
bin/kafka-topics.sh –describe –zookeeper localhost:2181
kill之后,再观察,做下对比。很明显,主要变化在于Isr,以后再分析
bin/kafka-topics.sh –describe –zookeeper localhost:2181

测试下,发送消息,接受消息,是否收到影响。
发送消息:
bin/kafka-console-producer.sh –topic topic_1 –broker-list 192.168.1.181:9092,192.168.1.181:9093,192.168.1.181:9094
接收消息:
bin/kafka-console-consumer.sh –topic topic_1 –zookeeper 192.168.1.181:2181 –from-beginning
可见,kafka的分布式机制,容错能力还是挺好的~

学习参考地址:
http://www.cnblogs.com/likehua/p/3999538.html
http://blog.csdn.net/zhouyou1986/article/details/42319461

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux上安装Kafka并进行测试,您可以按照以下步骤进行操作: 1. 首先,确保您的Linux系统已经安装了Java。您可以在终端中运行以下命令来检查Java的安装情况: ``` java -version ``` 如果您没有安装Java,请根据您的Linux发行版进行安装。 2. 下载Kafka。您可以通过访问Kafka的官方网站(https://kafka.apache.org/downloads)来下载最新版本的Kafka。选择合适的二进制文件下载链接。 3. 解压下载的Kafka压缩文件。您可以使用以下命令将其解压到所需的目录中(例如/opt目录): ``` tar -xzf kafka_<version>.tgz -C /opt ``` 4. 进入Kafka目录: ``` cd /opt/kafka_<version> ``` 5. 启动Zookeeper服务。Kafka依赖于Zookeeper来管理集群状态。您可以在启动之前编辑`config/zookeeper.properties`文件以进行必要的配置更改。然后,运行以下命令启动Zookeeper服务: ``` bin/zookeeper-server-start.sh config/zookeeper.properties ``` 6. 启动Kafka服务。在另一个终端窗口中,运行以下命令启动Kafka服务器: ``` bin/kafka-server-start.sh config/server.properties ``` 7. 创建一个主题。您可以使用以下命令创建一个名为`test`的主题: ``` bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1 ``` 8. 发布和消费消息。在同一个终端窗口中,使用以下命令发布一些消息: ``` bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9092 ``` 在另一个终端窗口中,使用以下命令消费消息: ``` bin/kafka-console-consumer.sh --topic test --bootstrap-server localhost:9092 --from-beginning ``` 这样,您就可以在Kafka中发布和消费消息了。 请注意,以上步骤假设您已经在单个节点上安装并运行Kafka。如果您希望在多个节点上设置Kafka集群,还需要进行其他配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值