Ubuntu部署kafka

1 下载

传送门:http://kafka.apache.org/downloads
下载binary版,不用编译。

2 配置

2.1 新建kafka文件夹

mkdir kafka

路径:/home/xdq/xinPrj/kafka

2.2 解压文件

tar -zxvf kafka_2.12-2.2.1.tgz -C .
  • 文件目录
|--kafka
├── kafka_2.12-2.2.1
│   ├── bin
│   ├── config
│   ├── libs
│   ├── LICENSE
│   ├── NOTICE
│   └── site-docs

2.3 修改配置文件

在文件夹config中的配置文件

序号文件描述
1server.propertieskafka配置文件,用于向zookeeper注册broker
2zookeeper.propertieszookeeper配置文件,用于承载kafka及producer,consumer的注册
3producer.properties生产者配置,连接zookeeper和kafka及向zookeeper注册
4consumer.properties消费者配置,连接zookeeper和kafka及向zookeeper注册
cd kafka/kafka_2.12-2.2.1/config

3 单机部署

3.1 server.properties

# broker(物理机) id编号,每台物理机指定唯一id,不可重复
broker.id=1
# 监听端口
port=9092
# 监听内网(局域网),PLAINTEXT传输协议(无需认证)
listeners=PLAINTEXT://:9092
# 网络线程
num.network.threads=3
# 处理请求IO线程
num.io.threads=8
# 套接字发送缓存
socket.send.buffer.bytes=102400
# 套接字接收缓存
socket.receive.buffer.bytes=102400
# 套接字最大请求字节
socket.request.max.bytes=104857600
# kafka日志路径
log.dirs=/home/xdq/xinPrj/kafka/kafka_2.12-2.2.1/kafka-logs
# boker的分区数
num.partitions=1
# RAID磁盘阵列:恢复盘数
num.recovery.threads.per.data.dir=1
# 副本数量
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
# 日志更新(缓存时间):单位:hour
log.retention.hours=168
# 分片字节量
log.segment.bytes=1073741824
# 检查日志时间
log.retention.check.interval.ms=300000
# 连接zookeeper,向zookeeper注册broker
zookeeper.connect=localhost:2181
# zookeeper连接周期
zookeeper.connection.timeout.ms=6000
# group均衡时间
group.initial.rebalance.delay.ms=0

3.2 zookeeper.properties

# zookeeper数据目录
dataDir=/home/xdq/xinPrj/zookeeper/datas
# zookeeper监听端口,用户端及broker,producer,consumer
clientPort=2181
# 主机host
host.name=localhost
# 客户端连接量
maxClientCnxns=0

3.3 producer.properties

# 连接broker服务IP:port
bootstrap.servers=localhost:9092
# 数据类型: none, gzip, snappy, lz4, zstd
compression.type=none
# 连接zookeeper
zookeeper.connect=localhost:2181

3.4 consumer.properties

# 连接broker服务IP:port
bootstrap.servers=localhost:9092
# 消费者用户组id
group.id=test-consumer-group
# 连接zookeeper
zookeeper.connect=localhost:2181

3.5 Usage

3.5.1 启动zookeeper

  • 从zookeeper启动并后台运行
bin/zkServer.sh start
  • 从kafka内启动前台运行
bin/zookeeper-server-start.sh config/zookeeper.properties

3.5.2 启动kafka

bin/kafka-server-start.sh config/server.properties
  • 查看此时的进程:jsp
jps
  • Result
24163 QuorumPeerMain
25235 Jps
24847 Kafka

3.5.3 创建topic

topic向zookeeper注册.

  • 创建
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test1
  • Result
Created topic test1.

3.5.4 查看topic

  • 查看
bin/kafka-topics.sh --list --zookeeper localhost:2181
  • Result
test1

3.5.5 启动生产者producer

  • 启动
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test1
  • Result
    启动了生产者服务.
>hello world!

3.5.6 启动消费者cousumer

  • 低版本启动
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test1 --from-begining
  • 高版本启动
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1 --from-beginning
  • 开启了接收消息的服务
hello world!

3.5.7 查看此时进程

  • cmd
jps
  • Result
24163 QuorumPeerMain
27943 ConsoleConsumer
28346 Jps
26542 ConsoleProducer
24847 Kafka

3.5.8 查看broker

bin/zookeeper-shell.sh localhost:2181,localhost:2182,localhost:2183
ls /brokers/ids
[1, 2, 3]

4 伪分布式部署

4.1 配置config文件

  • server1.properties
# broker(物理机) id编号,每台物理机指定唯一id,不可重复
broker.id=1
# 监听端口
port=9092
# 监听内网(局域网),PLAINTEXT传输协议(无需认证)
listeners=PLAINTEXT://:9092
# 网络线程
num.network.threads=3
# 处理请求IO线程
num.io.threads=8
# 套接字发送缓存
socket.send.buffer.bytes=102400
# 套接字接收缓存
socket.receive.buffer.bytes=102400
# 套接字最大请求字节
socket.request.max.bytes=104857600
# kafka日志路径
log.dirs=/home/xdq/xinPrj/kafka/kafka_2.12-2.2.1/kafka-logs
# boker的分区数
num.partitions=1
# RAID磁盘阵列:恢复盘数
num.recovery.threads.per.data.dir=1
# 副本数量
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
# 日志更新(缓存时间):单位:hour
log.retention.hours=168
# 分片字节量
log.segment.bytes=1073741824
# 检查日志时间
log.retention.check.interval.ms=300000
# 连接zookeeper,向zookeeper注册broker,kafka为主机内网host,218x为zookeeper端口
zookeeper.connect=kafak:2181,kafka:2182,kafka:2183
# zookeeper连接周期
zookeeper.connection.timeout.ms=6000
# group均衡时间
group.initial.rebalance.delay.ms=0
  • server2.properties
# broker(物理机) id编号,每台物理机指定唯一id,不可重复
broker.id=2
# 监听端口
port=9093
# 监听内网(局域网),PLAINTEXT传输协议(无需认证)
listeners=PLAINTEXT://:9093
# 网络线程
num.network.threads=3
# 处理请求IO线程
num.io.threads=8
# 套接字发送缓存
socket.send.buffer.bytes=102400
# 套接字接收缓存
socket.receive.buffer.bytes=102400
# 套接字最大请求字节
socket.request.max.bytes=104857600
# kafka日志路径
log.dirs=/home/xdq/xinPrj/kafka/kafka_2.12-2.2.1/kafka-logs
# boker的分区数
num.partitions=1
# RAID磁盘阵列:恢复盘数
num.recovery.threads.per.data.dir=1
# 副本数量
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
# 日志更新(缓存时间):单位:hour
log.retention.hours=168
# 分片字节量
log.segment.bytes=1073741824
# 检查日志时间
log.retention.check.interval.ms=300000
# 连接zookeeper,向zookeeper注册broker,kafka为主机内网host,218x为zookeeper端口
zookeeper.connect=kafak:2181,kafka:2182,kafka:2183
# zookeeper连接周期
zookeeper.connection.timeout.ms=6000
# group均衡时间
group.initial.rebalance.delay.ms=0
  • server3.properties
# broker(物理机) id编号,每台物理机指定唯一id,不可重复
broker.id=3
# 监听端口
port=9094
# 监听内网(局域网),PLAINTEXT传输协议(无需认证)
listeners=PLAINTEXT://:9094
# 网络线程
num.network.threads=3
# 处理请求IO线程
num.io.threads=8
# 套接字发送缓存
socket.send.buffer.bytes=102400
# 套接字接收缓存
socket.receive.buffer.bytes=102400
# 套接字最大请求字节
socket.request.max.bytes=104857600
# kafka日志路径
log.dirs=/home/xdq/xinPrj/kafka/kafka_2.12-2.2.1/kafka-logs
# boker的分区数
num.partitions=1
# RAID磁盘阵列:恢复盘数
num.recovery.threads.per.data.dir=1
# 副本数量
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
# 日志更新(缓存时间):单位:hour
log.retention.hours=168
# 分片字节量
log.segment.bytes=1073741824
# 检查日志时间
log.retention.check.interval.ms=300000
# 连接zookeeper,向zookeeper注册broker,kafka为主机内网host,218x为zookeeper端口
zookeeper.connect=kafak:2181,kafka:2182,kafka:2183
# zookeeper连接周期
zookeeper.connection.timeout.ms=6000
# group均衡时间
group.initial.rebalance.delay.ms=0

4.2 zookeeper使用独立的部署

参考博客:Ubuntu部署zookeeper的伪分布式zookeeper部署.

4.3 外网kafka通信

注释listeners=PLAINTEXT,修改如下:

advertised.listeners=PLAINTEXT://外网IP:9092

5 真集群部署

5.1 服务器集群

3台服务器为例,其中IP为任意选取的同外网段IP,配置时,在相应文件配置相应IP即可。

  • IP地址及端口
序号外网IP内网IP内网映射端口1端口2端口3端口4
110.10.10.10192.168.0.1kafka12181288838889092
210.10.12.12192.168.0.2kafka22181288838889092
310.10.14.14192.168.0.3kafka32181288838889092
  • 仅内网从kafka交换数据
配置文件IP选择端口
zookeeper内网IP2181
kafka:zookeeper.connect内网IP9092
kafka:advertised.listerns内网IP9092
  • 内网及外网交换数据
配置文件IP选择端口
zookeeper内网IP2181
kafka:zookeeper.connect内网IP9092
kafka:advertised.listerns外网IP9092

5.2 配置config文件

5.2.1 第一台服务器

  • server.properties
# broker(物理机) id编号,每台物理机指定唯一id,不可重复
broker.id=1
# 监听端口
port=9092
# 监听外网(局域网),PLAINTEXT传输协议(无需认证)
advertised.listeners=PLAINTEXT://10.10.10.10:9092
# 网络线程
num.network.threads=3
# 处理请求IO线程
num.io.threads=8
# 套接字发送缓存
socket.send.buffer.bytes=102400
# 套接字接收缓存
socket.receive.buffer.bytes=102400
# 套接字最大请求字节
socket.request.max.bytes=104857600
# kafka日志路径
log.dirs=/home/xdq/xinPrj/kafka/kafka_2.12-2.2.1/kafka-logs
# boker的分区数
num.partitions=1
# RAID磁盘阵列:恢复盘数
num.recovery.threads.per.data.dir=1
# 副本数量
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
# 日志更新(缓存时间):单位:hour
log.retention.hours=168
# 分片字节量
log.segment.bytes=1073741824
# 检查日志时间
log.retention.check.interval.ms=300000
# 连接zookeeper,向zookeeper注册broker,kafka为主机内网host,2181为zookeeper端口
zookeeper.connect=kafak1:2181,kafka2:2181,kafka3:2181
# zookeeper连接周期
zookeeper.connection.timeout.ms=6000
# group均衡时间
group.initial.rebalance.delay.ms=0

5.2.2 第二台服务器

  • server.properties
# broker(物理机) id编号,每台物理机指定唯一id,不可重复
broker.id=2
# 监听端口
port=9092
# 监听外网(局域网),PLAINTEXT传输协议(无需认证)
advertised.listeners=PLAINTEXT://10.10.12.12:9092
# 网络线程
num.network.threads=3
# 处理请求IO线程
num.io.threads=8
# 套接字发送缓存
socket.send.buffer.bytes=102400
# 套接字接收缓存
socket.receive.buffer.bytes=102400
# 套接字最大请求字节
socket.request.max.bytes=104857600
# kafka日志路径
log.dirs=/home/xdq/xinPrj/kafka/kafka_2.12-2.2.1/kafka-logs
# boker的分区数
num.partitions=1
# RAID磁盘阵列:恢复盘数
num.recovery.threads.per.data.dir=1
# 副本数量
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
# 日志更新(缓存时间):单位:hour
log.retention.hours=168
# 分片字节量
log.segment.bytes=1073741824
# 检查日志时间
log.retention.check.interval.ms=300000
# 连接zookeeper,向zookeeper注册broker,kafka为主机内网host,2181为zookeeper端口
zookeeper.connect=kafak1:2181,kafka2:2181,kafka3:2181
# zookeeper连接周期
zookeeper.connection.timeout.ms=6000
# group均衡时间
group.initial.rebalance.delay.ms=0

5.2.3 第三台服务器

  • server.properties
# broker(物理机) id编号,每台物理机指定唯一id,不可重复
broker.id=3
# 监听端口
port=9092
# 监听外网(局域网),PLAINTEXT传输协议(无需认证)
advertised.listeners=PLAINTEXT://10.10.14.14:9092
# 网络线程
num.network.threads=3
# 处理请求IO线程
num.io.threads=8
# 套接字发送缓存
socket.send.buffer.bytes=102400
# 套接字接收缓存
socket.receive.buffer.bytes=102400
# 套接字最大请求字节
socket.request.max.bytes=104857600
# kafka日志路径
log.dirs=/home/xdq/xinPrj/kafka/kafka_2.12-2.2.1/kafka-logs
# boker的分区数
num.partitions=1
# RAID磁盘阵列:恢复盘数
num.recovery.threads.per.data.dir=1
# 副本数量
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
# 日志更新(缓存时间):单位:hour
log.retention.hours=168
# 分片字节量
log.segment.bytes=1073741824
# 检查日志时间
log.retention.check.interval.ms=300000
# 连接zookeeper,向zookeeper注册broker,kafka为主机内网host,2181为zookeeper端口
zookeeper.connect=kafak1:2181,kafka2:2181,kafka3:2181
# zookeeper连接周期
zookeeper.connection.timeout.ms=6000
# group均衡时间
group.initial.rebalance.delay.ms=0

5.3 zookeeper使用独立的部署

参考博客:Ubuntu部署zookeeper的真分布式(集群)zookeeper部署.

5.4 Usage

  • 启动kafka
bin/kafka-server-start.sh --broker-list 10.10.10.10:9092,10.10.12.12:9092,10.10.14.14:9092 config/server.properties
  • 新建topic
bin/kafka-topics.sh --create --zookeeper 10.10.10.10:2181,10.10.12.12:2181 --replication-factor 1 --partition 1 --topic topic-test
  • 查看topic
bin/kafka-topics.sh --list --zookeeper 10.10.10.10:2181,10.10.12.12:2181,10.10.14.14:2181
  • 启动生产者
bin/kafka-console-producer.sh --broker-list 10.10.10.10:9092,10.10.12.12:9092,10.10.14.14:9092 --topic topic-test
  • 启动消费者
bin/kafka-console-consumer.sh --bootstrap-server 10.10.10.10:9092,10.10.12.12:9092,10.10.14.14:9092 --topic topic-test --from-beginning

5.5 外网kafka通信

注释listeners=PLAINTEXT,修改如下:

advertised.listeners=PLAINTEXT://外网IP:9092

6 小结

(1) kafka启动流程:zookeeper ↦ \mapsto kafka-server ↦ \mapsto create-topic ↦ \mapsto producer ↦ \mapsto consumer
(2) zookeeper启动,使用内网IP和2181端口;
(3) kafka启动分情况:

序号使用情况启动IP
1仅内网使用内网IP启动
2内网+外网外网IP启动

(4)监听服务说明

序号使用情况监听服务
1仅内网使用listeners
2内网+外网advetised.listeners

advertised.listeners是用于监听外网IP的服务,即若需要远程连接Kafka,需要将该参数配置为外网IP。
(5) 监听权限:

序号权限描述
1PLAINTEXT明文,无认证
2SASL/GSSAPIKerberos认证,0.9.0.0版本开始
3SASL/PLAIN0.10.0.0开始使用
4SASL/SCRAM-SHA-256和SASL/SCRAM-SHA-5120.10.2.0开始使用
5SASL/OAUTHBEARER2.0版本开始使用

【参考文献】
[1]http://kafka.apache.org/downloads
[2]https://blog.csdn.net/sinat_30026065/article/details/82148587
[3]https://blog.csdn.net/hg_harvey/article/details/79174104
[4]https://blog.csdn.net/csdn_sunlighting/article/details/81516646

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Ubuntu上安装Kafka的步骤如下: 1. 首先,您需要安装Java。您可以使用以下命令检查Java是否已安装成功:`java -version`。如果Java未安装,请使用适当的命令进行安装。 2. 安装Zookeeper。您可以使用以下命令安装Zookeeper:`apt-get install zookeeper`。 3. 创建一个目录来安装Kafka,并进入该目录:`mkdir kafka && cd kafka`。 4. 下载Kafka的二进制文件。您可以使用以下命令从清华大学镜像站下载Kafka 2.2.1的二进制文件:`wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.1/kafka_2.11-2.2.1.tgz`。 5. 解压缩下载的文件:`tar -xzf kafka_2.11-2.2.1.tgz --strip 1`。 6. 配置Kafka。您可以根据您的需求编辑Kafka配置文件。 7. 使用以下命令启动Kafka服务:`bin/kafka-server-start.sh config/server.properties`。如果您想在后台运行Kafka服务,可以使用以下命令:`bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &`。 这样,您就成功在Ubuntu上安装了Kafka。您可以使用其他命令来创建主题、查看主题列表、生成消息和消费消息。请根据您的需求进行相应的操作。 #### 引用[.reference_title] - *1* *2* *3* [ubuntu安装kafka](https://blog.csdn.net/qq233325332/article/details/121552098)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天然玩家

坚持才能做到极致

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

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

打赏作者

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

抵扣说明:

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

余额充值