Kafka第一课概述与安装

生产经验 面试重点
Broker面试重点
代码,开发重点
67 章了解

如何记录行为数据

1. Kafka概述

1.产生原因

前端 传到日志 日志传到Flume 传到HADOOP
但是如果数据特比大,HADOOP就承受不住了

2.Kafka解决问题

控流消峰
Flume传给Kafka
存到Kafka
Hadoop 从Kafka取数据 ,而不是Kafka强行发
类似 菜鸟驿站, 先存取来,我们主动去取,或者指定他去送

存到HDFS的,一定不是实时数据,因为HDFS太慢了
在这里插入图片描述

3.应用场景

1. 缓冲/消峰

消息队列存储数据,而不是直接发给处理系统,处理完一部分,再取,再处理
在这里插入图片描述

2.解耦

通过中间件接口,适配不同数据源和目的地

在这里插入图片描述

3.异步通信

允许用户将消息放入队列,但不立即处理,然后再需要的时候处理。
为什么异步处理快: 同步需要等待
点餐:
同步:服务员过来给我点餐 ,这里需要服务员过来
异步:扫桌子码自己点餐

4.消息队列模式

在这里插入图片描述
在这里插入图片描述
Kafka使用发布订阅模式
数据会保存一段时间

5.基础架构

生产者 - Broker - Group
TopicA是什么?
这里的分区是什么?
分区: 物理分割
为什么要分割:结合集群分散存储
在这里插入图片描述

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

1. 分区操作

topic 是一整个数据 ,分区是为了将数据分在不同的Broker上。类似于HDFS,
Broker是物理存储
Partition 类似于DN

2.消费者组的概念

类似权限管理把,组内并行消费,便于管理

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

3.副本

备份功能,备份partition 多个副本, 类似HDFS,类似DN(存入一下子3个)把
多副本时,一个副本叫leader 另一个副本叫follower,
也是选出来的角色 交互时只和leader交互
follower平时只有备份作用,但是当leader倒下时,他直接成为leader
在这里插入图片描述
这里是存储数据的目录,而不是存Kafka自己日志的目录
在这里插入图片描述
高可用, 配置多个
在这里插入图片描述
replicas 是存储副本的位置
lsr 是目前存活的副本

分区数只能改大,不能改小
副本数修改,
通过JSON手动修改

消费者按最新的offect进行消费

5.配置

1.解压

[atguigu@hadoop102 software]$ tar -zxvf kafka_2.12-3.3.1.tgz -C /opt/module/
[atguigu@hadoop102 module]$ mv kafka_2.12-3.3.1/ kafka

2.配置文件

配置文件目前只需要修改三个
broker编号 不同机器只需要编号不同即可
log.dir 数据存放位置
zookeeper.connect 连接集群的地址

[atguigu@hadoop102 kafka]$ cd config/
[atguigu@hadoop102 config]$ vim server.properties
# 修改1 broker的全局唯一编号,不能重复,只能是数字。 
broker.id=0#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的线程数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#修改2 这里其实是是存放到Kafka的数据的地方 kafka运行日志(数据)存放的路径,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/opt/module/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
#修改3  连接集群的位置 配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

3. 环境变量

sudo vim /etc/profile.d/my_env.sh
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

这个是为了启动的时候不需要输入一长串地址
比如:bin/kafka-server-start.sh -daemon config/server.properties
这里的config是kafka的路径 启动需要输入全路径

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

修改后

kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

4.集群脚本

#! /bin/bash
if [ $# -lt 1 ]
then echo "参数错误,请输入start或者stop"exit
fi
case $1 in
"start"){for i in hadoop102 hadoop103 hadoop104 do echo "---------------启动 $i Kafka ----------------------"ssh  $i  "$KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties"done
};;
"stop"){for i in hadoop102 hadoop103 hadoop104do echo "---------------停止 $i Kafka ---------------------"ssh $i  "$KAFKA_HOME/bin/kafka-server-stop.sh -daemon $KAFKA_HOME/config/server.properties"done
};;
esac

2.命令

1.主题命令

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

连接Broker 操作Kafka必须有这个命令
既可以输入一个,也可以输入多个

kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092,hadoop104:9092 

2.主题的创建和删除

– create +空格 ±-topic+空格+主题名
– delete +空格 ±-topic+空格+主题名
主题 主题名 一般放最后

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --partitions 1 --replication-factor 3 --topic first

在这里插入图片描述

–topic 定义topic名
–replication-factor 定义副本数
–partitions 定义分区数
在这里插入图片描述

3.查看所有主题

–list

4.查看主题详细描述

可以看单个主题,可以看全部主题
不加后缀默认查看全部
查看单个需要+空格 ±-topic+空格+主题名
在这里插入图片描述
在这里插入图片描述

5.修改–alter

设置分区数
–partitions <Integer: # of partitions>
在这里插入图片描述
分区只能调大,不能调小

设置分区副本
–replication-factor<Integer: replication factor>

// 手动调整kafka topic分区的副本数 {// 1. 版本号 这个是自定义的版本号"version":1,// 2. 分区是重点,因为副本改变分区也要改变。//   其实就是将分区的副本重新进行布局"partitions":[{"topic":"first","partition":0,"replicas":[1,2,0]},{"topic":"first","partition":1,"replicas":[2,0,1]},{"topic":"first","partition":2,"replicas":[2,0,1]}] 
}
// 运行命令
//kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092 --reassignment-json-file ./rep.json --execute

在这里插入图片描述

更新系统默认的配置。
–config <String: name=value>
临时调配参数

2.生产者命令

1.操作

--topic <String: topic>
[atguigu@hadoop102 kafka]$ bin/kafka-console-producer.sh
bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic first

在这里插入图片描述

3.消费者

kafka-console-consumer.sh --bootstrap-server +集群+ 主题

  • –bootstrap-server <String: server toconnect to> 连接的Kafka Broker主机名称和端口号。
  • –topic <String: topic> 操作的topic名称。
  • –from-beginning 从头开始消费。
  • –group <String: consumer group id> 指定消费者组名称。
kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first

为什么消费者未开启时,生产者发送的消息,等消费者起来了收不到?
没有指定消费者组时,每次开启,消费者属于的消费者组就是随机的,那么就无法进行断点续传
当主动指定组后,再次登录,在指定组后,会自动开启断点续传功能
在这里插入图片描述
在这里插入图片描述
想要提前的顺序,就需要,–from-beginning
但是不能和用户组一起跑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/91951.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDE的下载和使用

IDE 文章目录 IDEJETBRAIN JETBRAIN 官网下载对应的ide 激活方式 dxm的电脑已经把这个脚本下载下来了&#xff0c;脚本是macjihuo 以后就不用买了

系列六、Redis中的五大数据类型及相关操作

一、五大数据类型 String类型、List类型、Set类型、ZSet类型、hash类型。 二、String类型 2.1、内存储存模型 2.2、常用操作命令 三、List类型 3.1、概述 list列表&#xff0c;相当于Java中的list集合。特点&#xff1a;元素有序 且 可以重复。 3.2、内存存储模型 3.3、常用…

“粤”动扬帆,共赢数安|2023百城巡展走进广深双城

新起点新战略共赢数安蓝海 2023美创科技百城巡展之旅如火如荼 持续赋能区域合作伙伴 8月10-11日&#xff0c;美创科技相继走进广州、深圳。作为2023年百城巡展之行的重要区域&#xff0c;美创为合作伙伴带来最新渠道政策解读&#xff0c;行业机会点及新产品新方案分享&#…

AIGC绘画:基于Stable Diffusion进行AI绘图

文章目录 AIGC深度学习模型绘画系统stable diffusion简介stable diffusion应用现状在线网站云端部署本地部署Stable Diffusion AIGC深度学习模型绘画系统 stable diffusion简介 Stable Diffusion是2022年发布的深度学习文本到图像生成模型&#xff0c;它主要用于根据文本的描述…

ChatGPT or BingChat

你相信我们对大模型也存在「迷信权威」吗&#xff1f; ChatGPT 的 GPT-4 名声在外&#xff0c;我们就不自觉地更相信它&#xff0c;优先使用它。但我用 ChatALL 比较 AI 大模型们这么久&#xff0c;得到的结论是&#xff1a; ChatGPT GPT-4 在大多数情况下确实是最强&#xf…

SSM整合(XML方式)

文章目录 SSM整合之后xml方式1 系统环境1.1 软件环境1.2 项目环境1.3 配置web.xml1.4 配置jdbc.properties文件1.5 配置SpringMVC核心文件1.6 配置Spring的核心文件1.7 配置MyBatis的核心文件1.8 配置数据库1.9 配置文件位置 2 编写后端代码2.1 编写实体类2.2 编写Dao接口2.3 编…

Postman接口自动化测试实战,从0到1一篇彻底打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 postman中的测试 …

【设计模式】责任链模式

顾名思义&#xff0c;责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;为请求创建了一个接收者对象的链。这种模式给予请求的类型&#xff0c;对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中&#xff0c;通常每个接收者…

SegFormer之模型训练

单卡训练&#xff0c;所有配置文件里的【SyncBN】改为【BN】 启动训练 &#xff08;1&#xff09;终端直接运行 python tools/train.py local_configs/segformer/B1/segformer.b1.512x512.ade.160k.py &#xff08;2&#xff09;在编辑器中运行 在 [config] 前面加上’–‘将…

React源码解析18(6)------ 实现useState

摘要 在上一篇文章中&#xff0c;我们已经实现了函数组件。同时可以正常通过render进行渲染。 而通过之前的文章&#xff0c;beginWork和completeWork也已经有了基本的架子。现在我们可以去实现useState了。 实现之前&#xff0c;我们要先修改一下我们的index.js文件&#x…

从零开始,快速打造租车服务小程序的分享

随着移动互联网的发展&#xff0c;小程序成为了企业推广和服务的重要手段之一。租车服务行业也不例外&#xff0c;通过打造一款租车服务小程序&#xff0c;企业可以更好地与用户进行互动和交流&#xff0c;提供更方便快捷的租车服务。本文将介绍如何利用第三方制作平台/工具快速…

webpack 创建VUE项目

1、安装 node.js 下载地址&#xff1a;https://nodejs.org/en/ 下载完成以后点击安装&#xff0c;全部下一步即可 安装完成&#xff0c;输入命令验证 node -vnpm -v2.搭建VUE环境 输入命令&#xff0c;全局安装 npm install vue-cli -g安装完成后输入命令 查看 vue --ver…

HCIP-OpenStack搭建

1、OpenStack概述 OpenStack是一种云操作系统&#xff0c;OpenStack是虚拟机、裸金属和容器的云基础架构。可控制整个数据中心的大型计算、存储和网络资源池&#xff0c;所有资源都通过具有通用身份验证机制的API进行管理和配置。管理员也可通过Web界面控制&#xff0c;同时授…

【C语言】小游戏-扫雷(清屏+递归展开+标记)

大家好&#xff0c;我是深鱼~ 目录 一、游戏介绍 二、文件分装 三、代码实现步骤 1.制作简易游戏菜单 2. 初始化棋盘(11*11) 3.打印棋盘(9*9) 4.布置雷 5.计算(x,y)周围8个坐标的和 6.排查雷 <1>清屏后打印棋盘 <2>递归展开 <3>标记雷 四、完整代…

jupyter默认工作目录的更改

1、生成配置文件&#xff1a;打开Anaconda Prompt&#xff0c;输入如下命令 jupyter notebook --generate-config询问[y/N]时输入y 2、配置文件修改&#xff1a;根据打印路径打开配置文件jupyter_notebook_config.py&#xff0c;全文搜索找到notebook_dir所在位置。在单引号中…

vue3-vuex

一、概念 &#xff08;1&#xff09;Vuex 是一个状态和数据管理的框架&#xff0c;负责管理项目中多个组件和多个页面共享的数据。 &#xff08;2&#xff09;在开发项目的时候&#xff0c;我们就会把数据分成两个部分&#xff0c;一种数据是在某个组件内部使用&#xff0c;我…

数据库相关面试题

巩固基础&#xff0c;砥砺前行 。 只有不断重复&#xff0c;才能做到超越自己。 能坚持把简单的事情做到极致&#xff0c;也是不容易的。 mysql怎么优化 : MySQL的优化可以从以下几个方面入手&#xff1a; 数据库设计优化&#xff1a;合理设计表结构&#xff0c;选择合适的数…

《开放加速规范AI服务器设计指南》发布,应对生成式AI爆发算力挑战

8月10日&#xff0c;在2023年开放计算社区中国峰会(OCP China Day 2023)上&#xff0c;《开放加速规范AI服务器设计指南》&#xff08;以下简称《指南》&#xff09;发布。《指南》面向生成式AI应用场景&#xff0c;进一步发展和完善了开放加速规范AI服务器的设计理论和设计方法…

c语言——颠倒字符串顺序

//颠倒字符串顺序 //列如&#xff1a;我们将runningman利用递归翻转计算。 #include<stdio.h> void reverseSentence(); int main() {printf("字符串输入:");reverseSentence();return 0; }void reverseSentence() {char c;scanf("%c",&c);if(c!…

网络安全(自学)

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…