kafka搭建
文章目录
- 前言
- 一、kafka是什么?
- 二、应用场景
- 1. 实时数据处理
- 2. 日志聚合与分析
- 3. 事件驱动架构场景
- 三、kafka搭建流程
- 1. 确定环境
- 2. 整理机器清单
- 3. 确定组件版本
- 4 JDK安装
- 5 kafka安装
- 5.1 master安装
- 5.2 slave_1 从节点安装
- 5.3 slave_2 从节点安装
- 5.4 配置环境变量
- 5.5 启动kafak
- 5.5 kafka集群一键管理脚本
- 总结
前言
Kafka 以其卓越的性能、高可靠性和可扩展性,在大数据处理、实时数据传输、分布式系统架构等方面发挥着重要作用。它不仅能够高效地处理海量的消息,还能保证数据的一致性和完整。在实际应用中,Kafka 的应用场景十分广泛。除了传统的消息队列和数据处理领域,它还在实时流处理、物联网、人工智能等领域发挥着重要作用。本文将介绍一下kafka的搭建流程。
以下是本篇文章正文内容,下面流程仅供参考
一、kafka是什么?
kafka是一款分布式、支持分区的、多副本,基于zookeeper协调的分布式消息系统。最大的特性就是可以高效实时处理大量数据来满足需求。
二、应用场景
1. 实时数据处理
在互联网公司中,用于处理用户的实时行为数据,如网页浏览、点击、搜索等行为。通过将这些数据发送到 Kafka,再由消费者进行实时分析,可以实现实时推荐系统、用户行为分析等应用。
2. 日志聚合与分析
企业的服务器会产生大量的日志数据,Kafka 可以将这些日志数据从各个服务器收集起来,聚合到一个中心位置,然后再分发给日志分析工具(如 Elasticsearch)进行分析,用于故障排查、性能监控等目的
3. 事件驱动架构场景
在物联网、金融等领域,用于作为事件流的存储和处理平台。当一个事件发生时,将事件消息发送到 Kafka,相关的应用程序(消费者)可以根据事件进行相应的处理,如触发报警、更新业务数据等。
三、kafka搭建流程
1. 确定环境
# 系统环境
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
# JDK版本
[root@master ~]# java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
[root@master ~]#
2. 整理机器清单
序号 | ip | 主机名 | 部署服务 |
---|---|---|---|
1 | 192.168.40.129 | master | kafka,zookeeper,jdk |
2 | 192.168.40.130 | slave_1 | kafka,zookeeper,jdk |
3 | 192.168.40.131 | slave_2 | kafka,zookeeper,jdk |
3. 确定组件版本
组件 | 版本 |
---|---|
jdk | 1.8.0_161 |
zookeeper | kafka内置 |
kafka | kafka_2.11-0.10.2.1 |
4 JDK安装
详见jdk安装一节 jdk安装
5 kafka安装
kafka安装包下载并上传服务器
kafka网盘地址 kafka网盘
提取密码: 86q6
5.1 master安装
在master节点服务器上传安装包,解压,修改kafka,zookeeper的配置文件,并往从节点slave_1,slave_2分发安修改后的文件
# 上传安装包至安装目录
[root@master soft]# pwd
/data/soft
[root@master soft]# rz
[root@master soft]# ls | grep kafka
kafka_2.11-0.10.2.1
kafka_2.11-0.10.2.1.tgz
# 解压kafka压缩包
[root@master soft]# tar -xvf kafka_2.11-0.10.2.1.tgz
# 创建安装软连接目录,便于多版本管理,kafka_install不能提前创建
[root@master soft]# ln -sfn /data/soft/kafka_2.11-0.10.2.1 ./kafka_install
# master节点 修改kafka的server.properties 配置文件,
[root@master config]# pwd
/data/soft/kafka_install/config
[root@master config]# vim server.properties
# 修改配置如下保存并退出
broker.id=0
log.dirs=/data/kafka-logs
listeners=PLAINTEXT://:9092
host.name=192.168.40.129
port=9092
advertised.listeners=PLAINTEXT://192.168.40.129:9092
zookeeper.connect=192.168.40.129:2181,192.168.40.130:2181,192.168.40.131:2181
# master节点 修改zookeeper的配置文件 zookeeper.properties
[root@master config]# vim zookeeper.properties
dataDir=/data/zookeeper
# 创建数据文件
[root@master config]# mkdir /data/zookeeper
[root@master config]# mkdir /data/kafka-logs
# 解压文件分发
[root@master soft]# pwd
/data/soft
[root@master soft]#scp -r kafka_2.11-0.10.2.1 root@slave_1:/data/soft/
[root@master soft]#scp -r kafka_2.11-0.10.2.1 root@slave_2:/data/soft/
5.2 slave_1 从节点安装
在从节点slave_1,修改配置文件,创建数据目录
#创建安装软连接目录,便于多版本管理,kafka_install不能提前创建
[root@master soft]# ln -sfn /data/soft/kafka_2.11-0.10.2.1 ./kafka_install
# slave_1从节点 修改kafka的server.properties 配置文件,
[root@master config]# pwd
/data/soft/kafka_install/config
[root@master config]# vim server.properties
# 修改配置如下保存并退出
broker.id=1
log.dirs=/data/kafka-logs
listeners=PLAINTEXT://:9092
host.name=192.168.40.130
port=9092
advertised.listeners=PLAINTEXT://192.168.40.130:9092
zookeeper.connect=192.168.40.129:2181,192.168.40.130:2181,192.168.40.131:2181
# master节点 修改zookeeper的配置文件 zookeeper.properties
[root@master config]# vim zookeeper.properties
dataDir=/data/zookeeper
# 创建数据文件
[root@master config]# mkdir /data/zookeeper
[root@master config]# mkdir /data/kafka-logs
5.3 slave_2 从节点安装
在从节点slave_2,修改配置文件,创建数据目录
#创建安装软连接目录,便于多版本管理,kafka_install不能提前创建
[root@master soft]# ln -sfn /data/soft/kafka_2.11-0.10.2.1 ./kafka_install
# slave_1从节点 修改kafka的server.properties 配置文件,
[root@master config]# pwd
/data/soft/kafka_install/config
[root@master config]# vim server.properties
# 修改配置如下保存并退出
broker.id=2
log.dirs=/data/kafka-logs
listeners=PLAINTEXT://:9092
host.name=192.168.40.131
port=9092
advertised.listeners=PLAINTEXT://192.168.40.131:9092
zookeeper.connect=192.168.40.129:2181,192.168.40.130:2181,192.168.40.131:2181
# master节点 修改zookeeper的配置文件 zookeeper.properties
[root@master config]# vim zookeeper.properties
dataDir=/data/zookeeper
# 创建数据文件
[root@master config]# mkdir /data/zookeeper
[root@master config]# mkdir /data/kafka-logs
5.4 配置环境变量
# master节点,slave_1,slave_2 从节点都进行相同的操作
[root@master kafka_install]# vim /etc/profile
export KAFKA_HOME=/data/soft/kafka_install
export PATH=.:$PATH:$REDIS_CMD/bin:$JAVA_HOME/bin:$KAFKA_HOME/bin
[root@master kafka_install]#
[root@master kafka_install]# source /etc/profile
5.5 启动kafak
kafka启动时优先启动zookeeper,后启动kafka,关闭时优先关闭kafka,后关闭zookeeper
# 挂起终端方式 master,slave_1,slave_2 分别启动zookeeper或者使用 -daemon 作为守护进程
# zookeeper-server-start.sh -daemon /data/soft/kafka_install/config/zookeeper.properties
# kafka-server-start.sh -daemon /data/soft/kafka_install/config/server.properties
[root@master data]# zookeeper-server-start.sh /data/soft/kafka_install/config/zookeeper.properties &
# 挂起终端方式 master,slave_1,slave_2 分别启动kafka
[root@master data]# kafka-server-start.sh /data/soft/kafka_install/config/server.properties &
# 查看端口监听
[root@master data]# netstat -ntpl | grep 9092
tcp6 0 0 :::9092 :::* LISTEN 2734/java
[root@master data]# netstat -ntpl | grep 2181
tcp6 0 0 :::2181 :::* LISTEN 2469/java
#创建topic
[root@master tmp]# kafka-topics.sh --zookeeper master:2181 --create --topic test_create_v2 --partitions 1 --replication-factor 2
WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.
Created topic "test_create_v2".
# 查看topic元数据信息
[root@master tmp]# kafka-topics.sh --describe --zookeeper master:2181 --topic test_create_v2
Topic:test_create_v2 PartitionCount:1 ReplicationFactor:2 Configs:
Topic: test_create_v2 Partition: 0 Leader: 1 Replicas: 1,0 Isr: 1,0
kafka常用命令 kafka常用命令汇总
5.5 kafka集群一键管理脚本
[root@master bin]# pwd
/data/soft/kafka_install/bin
# 创建进程管理脚本
[root@master bin]# vim kfk_tools.sh
#!/bin/bash
kafka_start() {
for i in master slave_1 slave_2
do
echo " --------启动 $i zookeeper-------"
ssh $i "source /etc/profile; /data/soft/kafka_install/bin/zookeeper-server-start.sh -daemon /data/soft/kafka_install/config/zookeeper.properties"
sleep 1
done
sleep 5
for i in master slave_1 slave_2
do
echo " --------启动 $i kafka-------"
ssh $i "source /etc/profile; /data/soft/kafka_install/bin/kafka-server-start.sh -daemon /data/soft/kafka_install/config/server.properties"
sleep 1
done
}
kafka_stop() {
for i in master slave_1 slave_2
do
echo " --------关闭 $i Kafka-------"
ssh $i "source /etc/profile; /data/soft/kafka_install/bin/kafka-server-stop.sh"
sleep 5
done
sleep 5
for i in master slave_1 slave_2
do
echo " --------关闭 $i zookeeper-------"
ssh $i "source /etc/profile; /data/soft/kafka_install/bin/zookeeper-server-stop.sh"
sleep 1
done
}
case $1 in
"start")
kafka_start
;;
"stop")
kafka_stop
;;
"restart")
kafka_stop
kafka_start
;;
kfk_tools.sh
# 赋予脚本执行权限
[root@master bin]# chmod +x kfk_tools.sh
[root@master bin]# kfk_tools.sh start
--------启动 master zookeeper-------
--------启动 slave_1 zookeeper-------
--------启动 slave_2 zookeeper-------
--------启动 master kafka-------
--------启动 slave_1 kafka-------
#查看进程端口监听
[root@master bin]# netstat -ntpl | grep -E '9092|2181'
tcp6 0 0 :::9092 :::* LISTEN 12758/java
tcp6 0 0 :::2181 :::* LISTEN 12492/java
[root@slave_1 ~]# netstat -ntpl | grep -E '9092|2181'
tcp6 0 0 :::9092 :::* LISTEN 7834/java
tcp6 0 0 :::2181 :::* LISTEN 7571/java
[root@slave_2 ~]# netstat -ntpl | grep -E '9092|2181'
tcp6 0 0 :::9092 :::* LISTEN 7957/java
tcp6 0 0 :::2181 :::* LISTEN 7698/java
#集群暂停
[root@master bin]# kfk_tools.sh stop
--------关闭 master Kafka-------
--------关闭 slave_1 Kafka-------
--------关闭 slave_2 Kafka-------
--------关闭 master zookeeper-------
--------关闭 slave_1 zookeeper-------
--------关闭 slave_2 zookeeper-------
[root@master bin]# netstat -ntpl | grep -E '9092|2181'
总结
以上就是今天要讲的内容,本文仅仅简单介绍了kafka的应用场景,以及kafka如何搭建,在后续章节中会继续介绍kafka相关的知识。