Kafka单机环境配置及基本使用详解

Kafka中有一些基本的概念,

Topic

简介:Topic在Kafka中是一个抽象的概念,一个主题是已经发布的记录的种类。主题在Kafka中是可以被多重订阅的,这就意味着一个主题可能有0个、一个、或者许多个消费者去订阅这个主题中的消息。

Partitions:在每一个topic在Kafka中可以有多个分区,增加一个主题的分区可以提高Kafka的吞吐率,但是不是越多越好,因为如果分区数量越多的话生产者插入的效率也会降低。所以真正到生产环境时,需要权衡生产与消费的一个平衡关系,消费稍微大于生产者,不会产生消息的堆积,也能够充分提高Kafka的效率。

Replication Factor:复制因子,是对于当前的Topic是否需要副本。如果设置成1的话,代表当前Topic在整个Kafka中只有一份。这里有个限制Topic的数量不能够多于当前Kafka的Broker数量。

存储方式:在Kafka的配置中(Server.properties)有logs.dir的配置,这个是Kafka存储消息的位置。如果Topic复制因子是1分区是1的话,在对应的文件夹下会有一个名称为topicname的文件夹;如果复制因子是2分区是2,假设存在两个Broker,在每个Broker中将会存在两个文件夹分别为topicname_0 topicname_1的文件夹

Leader与Follower:由于每个topic如果存在副本的话,是对于partition进行复制。这么多存在在不同的Broker上的副本,其中有一个partition是leader其他的是Followers,当一个broker宕机会在副本中选择一个充当Leader。

Producer

生产者,顾明思议是生产消息,允许应用发布一个流的消息到一个或者多个主题中,

Consumer

简介:消费者是订阅某个topic消息。

Group:每个消费者都有个groupid 来标定当前消费者属于哪个group。Group的作用是,当同一个group的两个消费者订阅一个topic的时候,如果当前topic没有分区那么其中一个消费者是获得不了任何消息的;如果有分区的话,将会按照数量进行负载均衡,每个消费者获得不同的分区的消息。

同一个Group下的消费者不会同时订阅一个主题下的同一个分区,如果消费者数量杜宇分区数量,则多出的消费者是不会有任何消息获得的。

Broker

Broker 是一个Kafka的Server,一台单物理机或者集群都可以拥有多个broker一个broker可以容纳多个主题,这个与复制因子、主题的分区都有关系。

Kafka单机配置,一个Broker 环境: 配置zookeeper

下载

# zookeeper wget

解压后进入目录

cd zookeeper-3.4.13/conf

复制zookeeper的配置文件

cp zoo_sample.cfg zoo.cfg

返回上级进入bin目录下,键入如下命令

./zkServer.sh start

查看是否成功开启zookeeper服务

#注:这里提示一下开启后提示的成功不一定是真的成功,所以需要查看一下 netstat -tunlp|egrep 2181 # 如果没有结果查看统计目录下的 zookeeper.out文件 查看log信息 # 使用jps命令查看 QuorumPeerMain是zookeeper的守护进程 11089 QuorumPeerMain 11114 Jps 配置Kafka

下载安装包

# Kafka wget

解压后进入文件夹下bin目录下

# 第一个是start.sh位置第二个是server.rpoperties的位置,所以确认好路径的正确性 ./kafka-server-start.sh ./../config/server.properties & # 我们可以在Kafka的目录下直接执行,而不进入到bin下,命令看着更舒服些 ./bin/kafka-server-start.sh ./config/server.properties &

查看是否开启成功:默认的Kafka端口是9092,zookeeper是2181

netstat -tunlp|egrep "(2181|9092)" # 结果如下 [root@localhost ~]# netstat -tunlp|egrep "(2181|9092)" tcp6 0 0 :::9092 :::* LISTEN 1877/Java tcp6 0 0 :::2181 :::* LISTEN 1820/java # jps 查看 11089 QuorumPeerMain 11458 Kafka 11847 Jps

至此Kafka配置成功

使用Kafka 创建topic ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test # 返回结果 Created topic "test" 在虚拟机用sh脚本上作为生产者生产消息

我们重新开一个Xshell窗口,CD到Kafka目录/bin下,我们先介绍这一节会使用到的 kafka-console-producer.sh

# 键入如下命令 ./kafka-console-producer.sh --broker-list localhost:9092 --topic test >today message > # 最近本的指定,broker-list与topic是必须的参数 # 成功命令行会进入一个>的情况,键入消息按回车键就是发送消息到Kafka了 # 发送一个【today message】

kafka-console-producer.sh参数说明,运行./kafka-console-producer.sh --help可查看

在虚拟机上用sh脚本作为消费者消费消息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/be0f666235fabc9db508fbe3e181edbf.html