当前位置: 首页 > article >正文

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主机名部署服务
1192.168.40.129masterkafka,zookeeper,jdk
2192.168.40.130slave_1kafka,zookeeper,jdk
3192.168.40.131slave_2kafka,zookeeper,jdk

3. 确定组件版本

组件版本
jdk1.8.0_161
zookeeperkafka内置
kafkakafka_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相关的知识。


http://www.kler.cn/a/471631.html

相关文章:

  • 【PPTist】批注、选择窗格
  • xss-labs关卡记录15-20关
  • nginx-灰度发布策略(基于cookie)
  • 51单片机——共阴数码管实验
  • mv指令详解
  • 自动驾驶相关知识学习笔记
  • 代码随想录day38 动态规划6
  • 06-RabbitMQ基础
  • 【源码+文档+调试讲解】项目申报小程序
  • 一次压测的记录笔记
  • 基于 GEE 的 MODIS 数据集 NDVI 时间序列动画
  • FPGA与IC:选哪个更好?
  • 基于微信小程序疫苗预约系统ssm+论文源码调试讲解
  • 计算机网络之---网络拓扑
  • 教育咨询系统架构与功能分析
  • Android车载音频系统目录
  • pycharm-pyspark 环境安装
  • Koi技术教程-Tauri基础教程-第二节 Tauri的核心概念下
  • 02- 三自由度串联机械臂运动学分析
  • 【MySQL系列文章】Linux环境下安装部署MySQL
  • Quartz如何实现分布式调度
  • 4. 多线程(2)---线程的状态和多线程带来的风险
  • 如何用代码提交spark任务并且获取任务权柄
  • 大数据技术(八)—— HBase数据读写流程和Api的使用
  • uniapp打包到宝塔并发布
  • 使用python将自己的程序封装成API