kafka_1集群规划与配置

本文详细介绍了如何从头开始安装、配置ApacheKafka,包括集群部署、Zookeeper连接、设置环境变量、创建和管理topic、生产者消费者操作等关键步骤,以及消费者组和offset管理的注意事项。
摘要由CSDN通过智能技术生成

kafka配置文档

1,安装部署

集群规划

node2 node3 node4
zk    zk     zk
kafka kafka kafka

2,kafka的下载

http://kafka.apache.org/downloads.html

3,集群部署

3.1解压安装包,不修改名称

[itwise@node2 software]$ tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/module/

3.2修改名

[itwise@node2 software]$ cd ../module/
[itwise@node2 module]$ mv kafka_2.11-2.4.1.tgz kafka
我没修改

3.3在/opt/module/kafka 目录下创建 logs 文件夹

[itwise@node2 ~]$ cd /opt/module/kafka_2.11-2.4.1/
[itwise@node2 kafka]$ mkdir logs

3.4修改配置文件

[itwise@node2 kafka]$ cd config/
[itwise@node2 config]$ vim server.properties

修改唯一编号:

node2:broker.id=0 node3:broker.id=1 node4:broker.id=2

输入以下内容:
#broker 的全局唯一编号,不能重复
broker.id=0
#删除 topic 功能使能,当前版本此配置默认为 true,已从配置文件移除
delete.topic.enable=true
#处理网络请求的线程数量
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=/opt/module/kafka/logs

#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168

修改:#配置连接 Zookeeper 集群地址
zookeeper.connect=node2:2181,node3:2181,node4:2181

3.5配置环境变量

[itwise@node2 module]$ sudo vim /etc/profile.d/my_env.sh

添加:path

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka_2.11-2.4.1
export PATH=$PATH:$KAFKA_HOME/bin

分发环境变量

[itwise@node2]$scp -r /etc/profile.d/my_env.sh  root@node3://etc/profile.d/
[itwise@node2]$scp -r /etc/profile.d/my_env.sh  root@node4://etc/profile.d/

[itwise@node2]$ source /etc/profile
[itwise@node3]$ source /etc/profile
[itwise@node4]$ source /etc/profile

3.6分发kafka安装包并修改脚本

[itwise@node2 bin] my_rsync.sh kafka_2.11-2.4.1/

修改 :broker.id
[itwise@node3 config]$ vim server.properties
[itwise@node4 config]$ vim server.properties

broker.id=1、broker.id=2
注:broker.id 不得重复

3.7启动集群

!!!一定要先起动和先关闭zookeeper集群

[itwise@node2 bin]$ zk_cluster.sh start

3.8编集群一键起kafka脚本

my_kafka.sh

#!/bin/bash
if [ $# -lt 1 ]
then
echo "Input Args Error....."
exit
fi
for i in node2 node3 node4
do
case $1 in
start)
echo "==================START $i KAFKA==================="
ssh $i /opt/module/kafka_2.11-2.4.1/bin/kafka-server-start.sh -daemon
/opt/module/kafka_2.11-2.4.1/config/server.properties
;;
stop)
echo "==================STOP $i KAFKA==================="
ssh $i /opt/module/kafka_2.11-2.4.1/bin/kafka-server-stop.sh stop
;;
*)
echo "Input Args Error....."
exit
;;
esac
done

3.9编写一键查看进程脚本jps

my_jps.sh

#!/bin/bash
for host in node2 node3 node4
do
 echo "********$host******jps***********"
 ssh $host jps
done

3.10,给shell命令赋予执行权限

chmod 744 my_jps.sh
chmod 744 my_kafka.sh

4,查看kafka有没有注册到zookeeper中

[itwise@node2 ~]$ cd /opt/module/zookeeper-3.5.7/zkData/
[itwise@node2 zkData]$ ll
总用量 12
-rw-rw-r--. 1 itwise itwise    2 36 22:33 myid
drwxrwxr-x. 2 itwise itwise 4096 311 13:43 version-2
-rw-rw-r--. 1 itwise itwise    4 311 13:43 zookeeper_server.pid

看节点

[itwise@node2 bin]$ zkCli.sh

[zk: localhost:2181(CONNECTED) 0] ls / 
[admin, brokers, cluster, config, consumers, controller, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /brokers
[ids, seqid, topics]
[zk: localhost:2181(CONNECTED) 2] ls /brokers/ids
[0, 1, 2]

4.1查看当前服务器中的所有

[itwise@node2 kafka_2.11-2.4.1]$ bin/kafka-topics.sh --zookeeper node2:2181 --list
新安装没有创建,所以为空
  1. 查看topic 列表

    [itwise@node2 kafka_2.11-2.4.1]$ kafka-topics.sh --list --bootstrap-server node2:9092
    first
    secound
    

4.2创建 topic

不带副本

[itwise@node2 kafka_2.11-2.4.1]$ bin/kafka-topics.sh --create --bootstrap-server node2:9092 --topic secound

带副本

[itwise@node2 kafka_2.11-2.4.1]$ kafka-topics.sh --create --bootstrap-server node2:9092 --topic second --partitions 2 --replication-factor 3

选项说明:
--topic 定义 topic 名
--replication-factor 定义副本数
--partitions 定义分区数

4.3查看Topic详情,可以看见里面的内容

kafka-topics.sh --describe --bootstrap-server node2:9092 --topic first
Topic: first    PartitionCount: 1       ReplicationFactor: 3    Configs: segment.bytes=1073741824
 Topic: first    Partition: 0    Leader: 2       Replicas: 2,0,1 Isr: 2,0,1

在这里插入图片描述

4.4修改Topic的分区数(只能往大的地方改动)

[itwise@node2 kafka_2.11-2.4.1]$ kafka-topics.sh --alter --bootstrap-server node2:9092 --topic secound --partitions 2
查看是否修改:
[itwise@node2 kafka_2.11-2.4.1]$ kafka-topics.sh --describe --bootstrap-server node2:9092 --topic secound

在这里插入图片描述

4.5删除Topic,原有存储在/opt/module/kafka_2.11-2.4.1/logs的文件,末尾会增加 -delete 字样

[itwise@node2 kafka_2.11-2.4.1]$ kafka-topics.sh --delete --bootstrap-server node2:9092 --topic secound

在这里插入图片描述

4.6生产者生产消息

[itwise@node2 kafka_2.11-2.4.1]$ kafka-console-producer.sh --broker-list node2:9092 --topic first
4.6.1消费者消费数据offset重置问题
[itwise@node2 ~]$ kafka-console-consumer.sh --bootstrap-server node2:9092 --topic first
过一会,带第一个消费这接收数据一段时间之后,另开一个端口启动一个消费者

kafka-console-consumer.sh --bootstrap-server node2:9092 --topic first
这个时候,新启动的消费者不能获取生产者以前生产的数据,只能从最新的数据来取出。
新启动的消费者组中的消费者为何消费不到topic中的数据???

在这里插入图片描述
在这里插入图片描述

4.6.2重新给 生产者进行修改两个分区后,重新生产者重新输入,消费者没有反应,

在这里插入图片描述

4.6.3即使将消费者重新启动,原来输入的数据依旧没有
生产者重新输入消息,消费者按照分区,又进行的订阅

在这里插入图片描述
在这里插入图片描述

4.7消费者读取生产者生产的以前消息的方法

如果给这个消费者添加: --from-beginning 才可以将以前的数据取出。
topic first --from-beginning
[itwise@node2 ~]$ kafka-console-consumer.sh --bootstrap-server node2:9092 --topic first --from-beginning

在这里插入图片描述

4.8消费者组

使用如下命令,启动两个端口,作为同一个组中的两个消费者

kafka-console-consumer.sh --bootstrap-server node2:9092 --topic first --consumer.config /opt/module/kafka_2.11-2.4.1/config/consumer.properties

另开一个组,启动一个消费者

kafka-console-consumer.sh --bootstrap-server node2:9092 --topic first --group aa

在这里插入图片描述

1: node2 2: node2为一组

3: node3 4: node2为一组

在这里插入图片描述

观察就是 同一组,一个消息,只能被一个消费者消费,offset维护基于zookeeper的高可用?
  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值