Kafka集群安装


前言

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。Kafka通过官网发布了最新版本3.0.0

一、主要特性

Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:

  1. 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
  2. 高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
  3. 支持通过Kafka服务器和消费机集群来分区消息。
  4. 支持Hadoop并行数据加载。

二、相关术语

  1. Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker。
  2. Topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)。
  3. Partition:Partition是物理上的概念,每个Topic包含一个或多个Partition.
  4. Producer:负责发布消息到Kafka broker。
  5. Consumer:消息消费者,向Kafka broker读取消息的客户端。
  6. Consumer Group:每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。

三、实现

kafka名中的2.13是Scala语言版本(建议使用 2.13),后面3.0.0 是Kafka版本。当前最新版本为 3.0.0,也是稳定版本。端口默认为9092。
在这里插入图片描述

1.安装相关组件

安装JDK

参考之前的文章:
https://blog.csdn.net/RougeK/article/details/108676056

安装zookeeper集群

参考之前的文章:
https://blog.csdn.net/RougeK/article/details/120847826

2.创建安装目录

mkdir /usr/local/kafka

3.下载安装包并解压

推荐官网地址:http://www.apache.org/dyn/closer.cgi/zookeeper/

cd /usr/local/kafka
wget https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz
tar -zxvf kafka_2.13-3.0.0.tgz
cd kafka_2.13-3.0.0
mv /usr/local/kafka/kafka_2.13-3.0.0/* /usr/local/kafka/

4.编辑配置文件

cd /usr/local/kafka/config/
vim server.properties

############################# Server Basics #############################

# The id of the broker. This must be set to a unique integer for each broker.
# 默认是0,这里设置节点id,节点一:1,节点二:2,节点三:3
broker.id=1
############################# Socket Server Settings #############################

# The address the socket server listens on. It will get the value returned from 
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://172.16.12.41:9092
# The number of threads that the server uses for receiving requests from the network and sending responses to the network
# borker进行网络处理的线程数
num.network.threads=3

# The number of threads that the server uses for processing requests, which may include disk I/O
# borker进行I/O处理的线程数
num.io.threads=8

# The send buffer (SO_SNDBUF) used by the socket server
# 发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在>发送,能提高性能
socket.send.buffer.bytes=102400

# The receive buffer (SO_RCVBUF) used by the socket server
# kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.receive.buffer.bytes=102400

# The maximum size of a request that the socket server will accept (protection against OOM)
# 这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的>堆栈大小
socket.request.max.bytes=104857600
############################# Log Basics #############################

# A comma separated list of directories under which to store log files
# 消息存放的目录
# 这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这>个目录,如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中
,那个分区数最少就放那一个
log.dirs=/usr/local/kafka/logs

原配置文件只有log失效时间,其他三项要新增

# The minimum age of a log file to be eligible for deletion due to age
# log失效时间
log.retention.hours=168
# 消息保存的最大值5M
message.max.byte=5242880
# kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务
default.replication.factor=3
# 取消息的最大直接数
replica.fetch.max.bytes=5242880
############################# Zookeeper #############################

# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
# 设置zookeeper的连接端口
zookeeper.connect=172.16.12.31:2181,172.16.12.32:2181,172.16.12.33:2181

# Timeout in ms for connecting to zookeeper
# zookeeper链接超时时间
zookeeper.connection.timeout.ms=18000

其他配置可以保持默认.
同样的操作在server02和server03上修改一下broker.id和listeners,不再赘述。

5.启动Kafka

cd /usr/local/kafka/bin/
sh kafka-server-start.sh -daemon …/config/server.properties

注意:

  1. -daemon:以后台方式启动
  2. 必须指定配置文件

为确保服务成功启动,查看进程和端口

ps -ef | grep kafka
netstat -anp | grep 9092

在这里插入图片描述
关闭命令:这里不用带任何参数

sh kafka-server-stop.sh

同样的,启动server02和server03。

四、测试

在上一篇部署zookeeper集群里提到:连接kafka使用的时候,里面除了zookeeper之外还有其他内容,来查看一下。
在zookeeper集群任意节点上,使用bin目录下的客户端登录脚本:zkCli.sh

./zkCli.sh

在这里插入图片描述
注:zookeeper集群建好之后,通过“ls /”出来的只有zookeeper,连接kafka使用后,/目录下面多了不少东西,其中通过查看/brokers/ids可以发现已经检查到了已经安装的三台kafka的broker.id[1,2,3]。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值