Kafka集群部署安装

1 Kafak简介

Kafka 是一个事件流平台,Kafka 结合了三个关键功能:

  1. 发布(写入)和订阅(读取)事件流,包括连续导入/导出 来自其他系统的数据。
  2. 只要您愿意,就可以持久可靠地存储事件流。
  3. 在事件发生时处理事件流或回顾性处理事件流。

都是以分布式的、高度可扩展的、弹性的、容错的和 安全的方式。Kafka 可以部署在裸机硬件、虚拟机和容器上,也可以部署在本地 以及在云中。您可以选择自行管理 Kafka 环境和使用完全托管的环境 各种供应商提供的服务。

2 Kafka安装部署

前提条件

安装好zookeeper,安装zookeeper可参考Zookeeper集群安装-CSDN博客

2.1 Kafka下载

从 Kafka (apache.org) 官网下载Kafak,选择合适自己的安装包

下面以kafka_2.12-3.3.1.tgz为例安装部署演示

2.2 集群规划

集群规划
node1node2node3
ZookeeperZookeeperZookeeper

kafka

kafka

kafka

以三个节点为例,多个节点部署方法类似

2.3 解压安装

说明:在home/hadoop/soft下用于存放解压后的包

在home/hadoop/installfiles目录下用于存放安装包

在node1节点:

将下载好的安装包上传到/home/hadoop/installfiles目录下

在installfiles目录下将安装包解压到/home/hadoop/soft目录下

[hadoop@node1 ~]$ cd installfiles/

[hadoop@node1 installfiles]$ ls

kafka_2.12-3.3.1.tgz

[hadoop@node1 installfiles]$ tar -zxvf kafka_2.12-3.3.1.tgz -C ~/soft/

为了方便后续的操作

切换到soft目录下kafka_2.12-3.3.1名称修改为kafka

[hadoop@node1 soft]$ mv kafka_2.12-3.3.1 kafka

进入到/home/hadoop/soft/kafak/config目录下,修改配置文件server.properties

[hadoop@node1 ~]$ cd /home/hadoop/soft/kafka/config

[hadoop@node1 config]$ vim server.properties

修改以下内容

#broker的全局唯一编号,不能重复,只能是数字。
broker.id=0

#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://node1:9092
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的线程数量
num.io.threads=8
#发送套接字的缓冲区大小/log
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka运行日志(数据)存放的路径,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/home/hadoop/soft/kafka/datas
#topic在当前broker上的分区个数
num.partitions=1
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
# 每个topic创建时的副本数,默认时1个副本
offsets.topic.replication.factor=1
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#每个segment文件的大小,默认最大1G
log.segment.bytes=1073741824
# 检查过期数据的时间,默认5分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=node1:2181,node2:2181,node3:2181/kafka

该修的修改,该添加的添加

分发安装包给予node2、node3

[hadoop@node1 soft]$ xsync kafka/

分别在node2和node3上修改配置文件

/home/hadoop/soft/kafka/config/server.properties中的broker.id及advertised.listeners

node2修改为

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://node2:9092

node3修改为

修改:
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2
#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://ndoe3:9092

配置环境变量

在/etc/profile.d/my_env.sh文件中增加kafka环境变量配置

[hadoop@node1 soft]$ sudo vim /etc/profile.d/my_env.sh

添加内容如下

#KAFKA_HOME
export KAFKA_HOME=/home/hadoop/soft/kafka
export PATH=$PATH:$KAFKA_HOME/bin

刷新一下环境变量

[hadoop@node1 soft]$ source /etc/profile

分发环境变量文件到其他节点,并刷新一下环境变量

[hadoop@node1 soft]$ sudo /home/hadoop/bin/xsync /etc/profile.d/my_env.sh

[hadoop@node2 ~]$ source /etc/profile

[hadoop@node3 ~]$ source /etc/profile

2.4 启动集群

启动kafka之前必须先启动Zookeeper

[hadoop@node1 soft]$ zk.sh start

依次在node1、node2和node3节点上启动kafka

[hadoop@node1 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties

[hadoop@node2 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties

[hadoop@node3 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties

查看进程

[hadoop@node1 kafka]$ xcall jps

--------- node1 ----------

1940 QuorumPeerMain

2741 Kafka

2823 Jps

--------- node2 ----------

1858 QuorumPeerMain

2707 Kafka

2798 Jps

--------- node3 ----------

2656 Kafka

1863 QuorumPeerMain

2749 Jps

三个节点都看到kafka说明部署完成

2.4 集群启停脚本

在/home/hadoop/bin目录下创建文件kf.sh脚本文件

[hadoop@node1 kafka]$ cd /home/hadoop/bin

[hadoop@node1 bin]$ vim kf.sh

#! /bin/bash

case $1 in
"start"){
    for i in node1 node2 node3
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "/home/hadoop/soft/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
    done
};;
"stop"){
    for i in node1 node2 node3
    do
        echo " --------停止 $i Kafka-------"
        ssh $i "/home/hadoop/soft/kafka/bin/kafka-server-stop.sh "
    done
};;
esac

添加执行权限

[hadoop@node1 bin]$ chmod 777 kf.sh

启动集群命令

[hadoop@node1 bin]$ kf.sh start

停止集群命令

[hadoop@node1 bin]$ kf.sh stop

注意:停止Kafka集群时,一定要等Kafka所有节点进程全部停止后再停止Zookeeper集群。因为Zookeeper集群当中记录着Kafka集群相关信息,Zookeeper集群一旦先停止,Kafka集群就没有办法再获取停止进程的信息,只能手动杀死Kafka进程了。

kafka设置的端口号为9092

3 kafak命令行操作

3.1 查看操作主题命令参数

主题命令参数说明
参数描述

--bootstrap-server <String: server toconnect to>

连接的Kafka Broker主机名称和端口号

--topic <String: topic>

操作的topic名称

--create

创建主题

--delete

删除主题

--alter

修改主题

--list

查看所有主题

--describe

查看主题详细描述

--partitions <Integer: # of partitions>

设置分区数

--replication-factor<Integer: replication factor>

设置分区副本

--config <String: name=value>

更新系统默认的配置

3.2 生产者命令行操作

查看操作生产者命令参数

[hadoop@node1 kafka]$ bin/kafka-console-producer.sh

参数

描述

--bootstrap-server <String: server toconnect to>

连接的Kafka Broker主机名称和端口号

--topic <String: topic>

操作的topic名称

3.3  消费者命令行操作

查看操作消费者命令参数

[hadoop@node1 kafka]$ bin/kafka-console-consumer.sh

消费者命令参数说明
参数描述

--bootstrap-server <String: server toconnect to>

连接的Kafka Broker主机名称和端口号

--topic <String: topic>

操作的topic名称

--from-beginning

从头开始消费

--group <String: consumer group id>

指定消费者组名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值