kafka的安装与使用

ops/2024/11/14 6:22:00/

目录

一、 简介

1.1、概念

1.2、核心成员

1.3、特点

二、安装

2.1、zookeeper

2.2、上传解压重命名

2.3、修改配置文件

2.4、启动

2.5、一个启停脚本

三、使用

3.1、主题命令行操作

3.1.1查看操作主题命令参数

3.1.2创建 first topic

3.1.3查看当前服务器中的所有 topic

3.1.4查看主题的详情

3.1.5修改分区数

3.2、生产者命令行操作

3.2.1查看操作生产者命令参数

3.2.2发送消息

3.3、消费者命令行操作

3.3.1查看操作消费者命令参数

3.3.2消费主题中的数据

3.3.3把主题中所有的数据都读取出来(包括历史数据)


一、 简介

1.1、概念

Kafka 是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能的数据管道、流分析、数据集成和关键任务应用。作为一个事件流平台,Kafka 不仅处理消息,还处理事件流,即连续的数据流。它支持事件驱动的应用程序,通过事件流来触发业务逻辑。Kafka 提供了高吞吐量的数据传输能力,能够处理大量的数据流,同时通过多副本和持久化机制确保数据的可靠性和持久性。

1.2、核心成员

1)Producer:消息生产者,就是向 Kafka broker 发消息的客户端。 
2)Consumer:消息消费者,向 Kafka broker 取消息的客户端。 
3)Consumer Group(CG):消费者组,由多个 consumer 组成。消费者组内每个消 费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。 
4)Broker:一台 Kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。 
5)Topic:可以理解为一个队列,生产者和消费者面向的都是一个 topic。 
6)Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。 
7)Replica:副本。一个 topic 的每个分区都有若干个副本,一个 Leader 和若干个 Follower。
8)Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 Leader。 
9)Follower:每个分区多个副本中的“从”,实时从 Leader 中同步数据,保持和 Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的 Leader。

1.3、特点

1)高吞吐量:能够每秒处理数十万条消息,通过批量发送和异步处理机制进一步提高了系统的吞吐量。其次,Kafka 设计为低延迟的消息系统,适用于实时数据处理,从生产者发送消息到消费者接收到消息的时间非常短。

2)可扩展性:可以通过增加更多的 Broker 节点来实现水平扩展,并且可以在运行时动态调整集群的大小,无需停机。持久性和可靠性也是 Kafka 的核心优势之一,通过多副本机制和持久化存储,确保数据的持久性和可靠性,即使在 Broker 失效后也能恢复。

3) 支持数据分区和负载均衡:每个 Topic 可以划分为多个 Partition,每个 Partition 是一个有序的消息队列,通过多个 Partition 实现生产者和消费者的负载均衡,提高系统的整体性能。此外,Kafka 保证了消息的顺序性,在一个 Partition 内,消息是按顺序存储和消费的,通过合理的分区策略,可以实现全局顺序性。

4)提供灵活的消费模型:消费者可以加入消费组,共同消费一个 Topic 的消息,实现负载均衡和故障恢复。消费者可以从任意偏移量开始消费消息,支持消息的重播和重新处理。强大的生态系统也是 Kafka 的一大优势,内置的 Kafka Streams 框架用于构建实时数据处理应用程序,Kafka Connect 提供丰富的连接器,用于将 Kafka 与其他数据系统集成,Kafka Manager 则用于监控和管理 Kafka 集群。

5)多种身份验证机制:如 SASL/PLAIN、SASL/SCRAM、SSL 等,并提供细粒度的访问控制,限制不同用户的操作权限,同时支持数据传输的加密,确保数据的安全性。容错性方面,Kafka 具有自动故障恢复机制,当某个 Broker 失效时,会自动选举新的 Leader,确保系统的高可用性,并支持跨数据中心的部署,实现地理上的冗余和容错。

二、安装

2.1、zookeeper

kafka通过zk进行集群管理,并且Kafka集群的broker信息、topic和partition的状态信息都会存储在zk节点上,当有变化时,zk的信息也会更新,zk还负责kafka中分区leader的选举。

所以安装Kafka之前要检查一下zookeeper是否安装,若没有安装可点击下面这篇文章进行安装:

Zookeeper的安装与使用

2.2、上传解压重命名

上传:将压缩包上传到   /opt/moudles  下

解压

tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/installs/

重命名

cd /opt/installs

mv kafka_2.12-3.0.0/ kafka3

2.3、修改配置文件

先进入 /opt/installs/kafka3/config  下

cd /opt/installs/kafka3/config

 

vi server.properties

共有三处需要修改,以下是修改之后的

 

broker.id=0

 

log.dirs=/opt/installs/kafka3/datas

 

zookeeper.connect=bigdata01:2181,bigdata02:2181,bigdata03:2181/kafka  #这个需要配置了映射,若是没有配置则需要配置一下  /etc/hosts

环境变量

vi /etc/profile 

将下面的复制进去:

export KAFKA_HOME=/opt/installs/kafka3
export PATH=$PATH:$KAFKA_HOME/bin

 

在外面刷新一下:source /etc/profile

将这些配置分发到另外两台机器上:

scp /opt/installs/kafka3 root@"你另外两台机器的IP地址":/opt/installs

profile文件也要分发

2.4、启动

使用启动脚本  zk.sh  启动  zk        启动Kafka之前必须启动zookeeper

依次在三台机器上启动kafka

kafka3下:

bin/kafka-server-start.sh -daemon config/server.properties

关闭kafka命令:  bin/kafka-server-stop.sh   三台机器上依次运行

2.5、一个启停脚本

在/usr/local/sbin 目录下创建文件 kf.sh 脚本文件 
vim kf.sh

#! /bin/bash
case $1 in
"start"){
 for i in bigdata01 bigdata02 bigdata03
 do
 echo " --------启动 $i Kafka-------"
 ssh $i "source /etc/profile; /opt/installs/kafka3/bin/kafka-server-start.sh -daemon /opt/installs/kafka3/config/server.properties"
 done
};;
"stop"){
 for i in bigdata01 bigdata02 bigdata03
 do
 echo " --------停止 $i Kafka-------"
 ssh $i "source /etc/profile; /opt/installs/kafka3/bin/kafka-server-stop.sh"
 done
};;
esac

添加权限  :chmod u+x kf.sh

使用:开启  kf.sh start     停止   kf.sh stop 在第一个节点上运行即可

三、使用

3.1、主题命令行操作

3.1.1查看操作主题命令参数

bin/kafka-topics.sh

3.1.2创建 first topic

bin/kafka-topics.sh --bootstrap-server bigdata01:9092 --create --partitions 1 --replication-factor 3 --topic second

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

3.1.3查看当前服务器中的所有 topic

bin/kafka-topics.sh --bootstrap-server bigdata01:9092 --list

3.1.4查看主题的详情

bin/kafka-topics.sh --bootstrap-server bigdata01:9092 --describe --topic second

3.1.5修改分区数

注意:分区数只能增加,不能减少

bin/kafka-topics.sh --bootstrap-server bigdata01:9092 --alter --topic first --partitions 3

3.2、生产者命令行操作

3.2.1查看操作生产者命令参数

bin/kafka-console-producer.sh

3.2.2发送消息

bin/kafka-console-producer.sh --bootstrap-server bigdata01:9092 --topic first

3.3、消费者命令行操作

3.3.1查看操作消费者命令参数

bin/kafka-console-consumer.sh

3.3.2消费主题中的数据

bin/kafka-console-consumer.sh --bootstrap-server bigdata01:9092 --topic first

生产者发送消息,消费者消费,这边发那边立马就能收到

3.3.3把主题中所有的数据都读取出来(包括历史数据)

bin/kafka-console-consumer.sh --bootstrap-server bigdata01:9092 --from-beginning --topic first


http://www.ppmy.cn/ops/133053.html

相关文章

【MySQL】MySQL基础知识复习(下)

前言 上一篇博客介绍了MySQL的库操作,表操作以及CRUD。 【MySQL】MySQL基础知识复习(上)-CSDN博客 本篇将进一步介绍CRUD操作,尤其是查找操作 目录 一.数据库约束 1.约束类型 1.1NULL约束 1.2UNIQUE:唯一约束 …

lua入门教程:math

在Lua中,math库是一个非常重要的内置库,它提供了许多用于数学计算的函数。这些函数可以处理各种数学运算,包括基本的算术运算、三角函数、对数函数、随机数生成等。结合你之前提到的Lua中的数字遵循IEEE 754双精度浮点标准,我们可…

【Visual Studio系列教程】什么是 Visual Studio?

欢迎阅读本文!这意味着你可能已经准备好开始学习如何使用 Visual Studio 进行开发。既然如此,我们就不多做废话,直接进入本系列的第1篇文章:《什么是 Visual Studio?》。 Visual Studio 是一款功能强大的开发人员工具…

Linux——简单认识vim、gcc以及make/Makefile

前言:大佬写博客给别人看,菜鸟写博客给自己看,我是菜鸟。 1、vim操作: 默认打开vim时,vim处于命令模式。(在其他模式中,Esc就能够返回命令模式) 常用的命令有: n gg:跳转到n行&…

Mysql COUNT() 函数详解

Mysql COUNT 函数详解 COUNT() 的几种用法COUNT(*)COUNT(1)COUNT(column)COUNT(*) 与 GROUP BYCOUNT(*) 与 GROUP BY 和 HAVING COUNT(expr) 的用法COUNT(DISTINCT expr)COUNT(expr) 带条件查询 写在最后 在使用Mysql的时候,作为开发者,聚合函数是肯定会…

第三十六章 Vue之路由重定向/404页面设置/路径模式设置

目录 一、路由重定向 1.1. 使用方式 1.2. 完整代码 1.2.1. main.js 1.2.2. App.vue 1.2.3. index.js 1.2.4. Search.vue 1.2.5. Home.vue 1.3. 运行效果 二、设定404错误页面 2.1. 使用方式 2.2. 完整代码 2.2.1. index.js 2.2.2. NotFound.vue 2.2.3. 运行效…

[每周一更]-(第122期):模拟面试|数据库面试思路解析

10|数据库索引:为什么 MySQL 用 B+ 树而不用 B 树? 为什么 MySQL 用 B+ 树而不用 B 树? 什么是覆盖索引? 什么是聚簇索引/非聚簇索引? 什么是哈希索引?MySQL InnoDB 引擎怎么创建一个哈希索引? 什么回表?如何避免回表? 树的高度和查询性能是什么关系? 什么是索引最左…

深入浅出rust内存对齐

在 Rust 中,内存对齐是一个重要的概念,它涉及到数据在内存中的存储方式,以及如何优化内存访问的效率。往往一门语言的内存布局以及对齐方式决定了一门语言的性能,因此学会并深入理解rust中内存布局会让我们写出高性能的rust代码&a…