尚硅谷Kafka教程 2019 --- 狗剩学习笔记

介绍

尚硅谷Kafka教程(kafka框架快速入门) 600分钟
https://www.bilibili.com/video/BV1a4411B7V9?p=1

git 学习源码
https://github.com/wei198621/bigdata_kafka

官方资料 含有源码
https://my.oschina.net/jallenkwong/blog/4449224#h2_61

尚硅谷大数据技术之Kafka(2019新版)源码笔记,视频bilibili上有
链_接_:https://pan.baidu.com/s/1cYSSpIlIqBRHlYPxJUmttg
口_令_:juy7

资源位置
https://download.csdn.net/download/wei198621/14975193
kafka官网 : http://kafka.apache.org/downloads

第一章 kafka 概述
第二章 kafka 快速入门
第三章 kafka 架构深入
第四章 kafka API
第五章 kafka 监控
第六章 Flume 对接KAFKA
第七章 kafka面试题

学习实现 (2021 01 31 ~ )

目录

P01_尚硅谷_Kafka入门_课程介绍 05:08
P02_尚硅谷_Kafka入门_定义 02:54
P03_尚硅谷_Kafka入门_消息队列 10:23
P04_尚硅谷_Kafka入门_消费模式 10:27
P05_尚硅谷_Kafka入门_基础架构 23:05
P06_尚硅谷_Kafka入门_安装&启动&关闭 20:59
P07_尚硅谷_Kafka入门_命令行操作Topic增删查 15:55
P08_尚硅谷_Kafka入门_命令行控制台生产者消费者测试 11:18
P09_尚硅谷_Kafka入门_数据日志分离 10:02
P10_尚硅谷_Kafka入门_回顾 20:39
P11_尚硅谷_Kafka高级_工作流程 09:45
P12_尚硅谷_Kafka高级_文件存储 12:45
P13_尚硅谷_Kafka高级_生产者分区策略 07:02
P14_尚硅谷_Kafka高级_生产者ISR 22:55
P15_尚硅谷_Kafka高级_生产者ACk机制 08:36
P16_尚硅谷_Kafka高级_数据一致性问题 13:25
P17_尚硅谷_Kafka高级_ExactlyOnce 09:22
P18_尚硅谷_Kafka高级_生产者总结 05:25
P19_尚硅谷_Kafka高级_消费者分区分配策略 20:41
P20_尚硅谷_Kafka高级_消费者offset的存储 30:38
P21_尚硅谷_Kafka高级_消费者组案例 13:14
P22_尚硅谷_Kafka高级_高效读写&ZK作用 10:19
P23_尚硅谷_Kafka高级_Ranger分区再分析 05:56
P24_尚硅谷_Kafka高级_事务 09:36
P25_尚硅谷_Kafka高级_API生产者流程 08:44
P26_尚硅谷_Kafka高级_API普通生产者 24:01
P27_尚硅谷_Kafka高级_回顾 20:38
P28_尚硅谷_Kafka案例_API带回调函数的生产者 17:06
P29_尚硅谷_Kafka案例_API生产者分区策略测试 06:04
P30_尚硅谷_Kafka案例_API自定义分区的生成者 20:39
P31_尚硅谷_Kafka案例_API同步发送生成者 08:07
P32_尚硅谷_Kafka案例_API简单消费者 22:58
P33_尚硅谷_Kafka案例_API消费者重置offset 12:39
P34_尚硅谷_Kafka案例_消费者保存offset读取问题 05:58
P35_尚硅谷_Kafka案例_API消费者手动提交offset 22:09
P36_尚硅谷_Kafka案例_API自定义拦截器(需求分析) 06:15
P37_尚硅谷_Kafka案例_API自定义拦截器(代码实现) 09:24
P38_尚硅谷_Kafka案例_API自定义拦截器(案例测试) 10:41
P39_尚硅谷_Kafka案例_监控Eagle的安装 14:37
P40_尚硅谷_Kafka案例_监控Eagle的使用 18:00
P41_尚硅谷_Kafka案例_Kafka之与Flume对接 13:05
P42_Kafk之与Flume对接(数据分类) 11:37
P43_Kafka之Kafka面试题 24:28

kafka 指令示例

01 启动 kafka zookeeper

[root@kafka01 bin]# pwd
/usr/local/bin
[root@kafka01 bin]# ll
total 16
-rwxr--r--. 1 root root 466 Mar 28 01:51 ctlkafkaauto.sh
-rwxr--r--. 1 root root 394 Mar 28 01:41 ctlzookeeperauto.sh
lrwxrwxrwx. 1 root root  36 Mar 28 00:27 jps -> /usr/local/java/jdk1.8.0_251/bin/jps
-rwxr--r--. 1 root root 154 Mar 28 00:24 xcallkafka.sh
-rwxr--r--. 1 root root 145 Mar 28 01:00 xcallzk.sh
[root@kafka01 bin]# ctlzookeeperauto.sh start
[root@kafka01 bin]# ctlkafkaauto.sh start
[root@kafka01 bin]# xcallzk.sh jps
[root@kafka01 bin]# xcallkafka.sh jps


进入 kafka脚本目录

[root@kafka01 bin]# cd /opt/module/kafka/
[root@kafka01 kafka]# ll

02 topic

001 查看topic列表

[root@kafka01 kafka]# bin/kafka-topics.sh --zookeeper zk1:3001 --list
__consumer_offsets
bigdata
first

002 新建topic

[root@kafka01 kafka]# bin/kafka-topics.sh --zookeeper zk1:3001  --topic second --create --replication-factor 2 --partitions 2
Created topic "second".
[root@kafka01 kafka]# bin/kafka-topics.sh --zookeeper zk1:3001 --list
__consumer_offsets
bigdata
first
second

003 删除某个topic

[root@kafka01 kafka]# bin/kafka-topics.sh --zookeeper zk1:3001 --list
__consumer_offsets
first
second
[root@kafka01 kafka]# bin/kafka-topics.sh --zookeeper zk1:3001 --topic second --delete 
Topic second is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
[root@kafka01 kafka]# bin/kafka-topics.sh --zookeeper zk1:3001 --list
__consumer_offsets
first

004-1 查看有哪些消费组

[root@kafka01 kafka]# bin/kafka-consumer-groups.sh --bootstrap-server kafka01:9092 --list

004-2 查看有哪些消费组(老版本)

[root@kafka01 kafka]# bin/kafka-consumer-groups.sh --zookeeper zk1:3001 --list
Note: This will only show information about consumers that use ZooKeeper (not those using the Java consumer API).
test-consumer-group
test-consumer-group1

005 查看某个消费组的详情

在这里插入代码片

03 producer

001 启动消息生产者 向 bigdata 的topic 生成消息

[root@kafka01 kafka]# bin/kafka-console-producer.sh --broker-list kafka01:9092 --topic bigdata
>1111111

------如果增发参数 --from-beginning  表示从头消费 
[root@kafka01 kafka]# bin/kafka-console-consumer.sh --zookeeper zk1:3001 --topic bigdata --from-beginning

04 consumer

001 消费者消费消息方式一 : 老的链接zookeeper 方式
此块会使用随机名的消费者组 消费kafka 内容

[root@kafka01 kafka]# bin/kafka-console-consumer.sh --zookeeper zk1:3001 --topic bigdata
1111111

0002 3.3.4 消费者组案例
1)需求:测试同一个消费者组中的消费者,同一时刻只能有一个消费者消费。
2)案例实操

(1)在 kafka01、kafka03上修改/opt/module/kafka/config/consumer.properties 配置
文件中的 group.id 属性为同一组名,本示例为atguigu 。
[root@kafka01 kafka]# pwd
/opt/module/kafka
[root@kafka01 kafka]# vim config/consumer.properties 
group.id=atguigu
(2)在 kafka01、kafka03上分别启动消费者
[root@kafka01 kafka]# bin/kafka-console-consumer.sh --zookeeper -zk1:3001 --topic bigdata --consumer.config config/consumer.properties

[root@kafka03 kafka]# bin/kafka-console-consumer.sh --zookeeper zk1:3001 --topic bigdata --consumer.config config/consumer.properties 
(3)在 kafka02 上启动生产者  (那个Kafka启动生产者无所谓,重要的是要向  bigdata 的topic 发送数据)
[root@kafka02 kafka]# bin/kafka-console-producer.sh --broker-list kafka01:9092 --topic bigdata
>1111111
(4)查看 kafka01和 kafka03的接收者。
 同一时刻只有一个消费者接收到消息。

05 zkCli.sh 查看zookeeper 基本信息

001

----- 本地使用的是3001作为zk的端口,不是默认的2181 所以要单独指定-server 参数
[root@zk1 ~]# cd /root/zookeeper-3.4.12/
[root@zk1 zookeeper-3.4.12]# sh bin/zkCli.sh -timeout 5000 -server 127.0.0.1:3001
...
...
[zk: 127.0.0.1:3001(CONNECTED) 0] ls /
[cluster, controller_epoch, controller, brokers, zookeeper, admin, isr_change_notification, consumers, latest_producer_id_block, config]
---------
---------
[zk: 127.0.0.1:3001(CONNECTED) 1] get /controller
{
   "version":1,"brokerid":1,"timestamp":"1617370582722"}

001

在这里插入代码片

第一章 kafka 概述

P01_尚硅谷_Kafka入门_课程介绍 05:08

kafka 是一个分布式的基于发布、订阅模式的 消息队列 (Message Queue),主要应用于大数据实时处理领域。

P02_尚硅谷_Kafka入门_定义 02:54

kafka 是一个基于 发布/订阅模式的分布式消息队列 (Message Queue)
spark — kafka
storm — kafka
flink ----

P03_尚硅谷_Kafka入门_消息队列 10:23

在这里插入图片描述
消息队列的好处:
解耦:
削峰

P04_尚硅谷_Kafka入门_消费模式 10:27

消息队列模式:

  1. 点对点模式
  2. 发布-订阅模式
    ------------------ 2.1 发布者推送模式 (公众号的模式)
    ------------------ 2.2 消费者拉取模式 (要维护一个长轮询,不断的问,有没有,有没有?kafka 是这种模式)

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

P05_尚硅谷_Kafka入门_基础架构 23:05

Broker1:Broker2:Broker3: 就是kafka服务器
topicA : 主题将消息做分类
Partition: 分区是做分布式 主从备份用的,生产者消费者只找leader ,follower 用于leader 挂掉的情况下
一个分区(Partition)中的消息,只能被一个消费者组中的某一个消费者消费。(比如TopicA – Partition 0 中的消息,如果被ConsumerA 消费了,就不能被ConsumerB消费,把一个消费者组,看成一个消费团体;消费者组中的消费者个数,与topic中的分区数一致情况下,消息流转效率最高)
zookeeper: 0.9之前用于保存消费消息偏移量 。0.9之后消费消息偏移量存放在本地KAFKA(磁盘)中,默认7天。
在这里插入图片描述同一个分区中的消息,不可以被同一组消费者消费
在这里插入图片描述

2021-01-31
2021-03-27

第二种 kafka 快速入门

P06_尚硅谷_Kafka入门_安装&启动&关闭 20:59

kafka官网:http://kafka.apache.org/downloads
kafka最新2.7,kafka 使用 sclar编写
在这里插入图片描述

20210217
kafka 使用Scala 编写
本视频使用 0.11 讲解
kafka 基于zookeeper ,所以要先学习zookeeper (暂停此视频的学习)
20210219 继续本篇学习,龟速进展
20210220 继续
20210327 继继续
20210328 继继继续

集群部署

1)解压安装包

[atguigu@hadoop102 software]$ tar -zxvf kafka_2.11-0.11.0.0.tgz -C
/opt/module/

2)修改解压后的文件名称

[atguigu@hadoop102 module]$ mv kafka_2.11-0.11.0.0/ kafka

3)在/opt/module/kafka 目录下创建 logs 文件夹

[atguigu@hadoop102 kafka]$ mkdir logs

4)修改配置文件

[atguigu@hadoop102 kafka]$ cd config/
[atguigu@hadoop102 config]$ vi server.properties
输入以下内容:

#broker 的全局唯一编号,不能重复
broker.id=1
#删除 topic 功能使能
delete.topic.enable=true
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘 IO 的现成数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka 运行日志存放的路径
log.dirs=/opt/module/kafka/logs
#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接 Zookeeper 集群地址
zookeeper.connect=zk1:3001,zk2:4001,zk3:5001

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

5)配置环境变量
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export JAVA_HOME=/usr/local/java/jdk1.8.0_251
export JRE_HOME=/usr/local/java/jdk1.8.0_251/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib:$KAFKA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$KAFKA_HOME/bin
6)分发安装包

[atguigu@hadoop102 module]$ xsync kafka/
[root@kafka01 module]# xsync.sh /opt/module/kafka kafka0 2 3
xsync 分发指令时自己单独写的sh 指令,详见
https://blog.csdn.net/wei198621/article/details/115279861

7)分别在 hadoop103 和 hadoop104 上修改配置文件/opt/module/kafka/config/server.properties

中的 broker.id=1、broker.id=2
注:broker.id 不得重复
原教程 0 1 2 ,我的是 1 2 3

[root@kafka02 module]# vim /opt/module/kafka/config/server.properties 
broker.id=2
[root@kafka03 .ssh]# vim /opt/module/kafka/config/server.properties 
broker.id=3
8手动启动
8.1)启动zookeeper集群

启动zookeeper zk1-111、zk2-112、zk3-113

121.111 zk1 :3001
121.112 zk2 :4001
121.113 zk3 :5001
----------------zk3-------------------
[root@zk3 zkdata]# pwd
/root/zkdata
[root@zk3 zkdata]# cat zoo.cfg
initLimit=10
syncLimit=5
dataDir=/root/zkdata
clientPort=5001   -------------作为对外端口
server.1=zk1:3002:3003 
server.2=zk2:4002:4003
server.3=zk3:5002:5003
[root@zk1 ~]# pwd
/root
[root@zk1 ~]# ll
total 35816
drwxr-xr-x.  3 root root       78 Dec 18 22:11 zkdata
drwxr-xr-x. 10 leo  leo      4096 Mar 26  2018 zookeeper-3.4.12
-rw-r--r--.  1 root root 36667596 Apr 10  2020 zookeeper-3.4.12.tar.gz
[root@zk1 ~]# cd /root
[root@zk1 ~]# tree -L 2
.
├── zkdata
│   ├── myid
│   ├── version-2
│   ├── zoo.cfg
│   └── zookeeper_server.pid
├── zookeeper-3.4.12
│   ├── bin
│   ├── build.xml
│   ├── conf
----启动zookeeper01  
[root@zk1 bin]# cd /root/zookeeper-3.4.12/bin
[root@zk1 bin]# ./zkServer.sh start /root/zkdata/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /root/zkdata/zoo.cfg
Starting zookeeper ... STARTED
[root@zk1 bin]# jps
10563 Jps
10510 QuorumPeerMain   ----已经启动 

zookeeper集群的搭建详见
https://blog.csdn.net/wei198621/article/details/113832427
ZooKeeper 分布式协调服务实战—编程不良人 笔记

8.2)启动kafka集群

依次在 kafka01、kafka02、kafka03 节点上启动 kafka

------- -daemon  作为守护进程启动(后台启动)  不阻塞
[root@kafka01 kafka]# /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties
[root@kafka01 kafka]# jps
30612 Jps
30583 Kafka

[root@kafka02 config]# /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties
[root@kafka02 config]# jps
31619 Jps
31596 Kafka

[root@kafka03 config]# /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties
[root@kafka03 config]# jps
31332 Kafka
31371 Jps

8.3) 监控 kafka zookeeper 共六台机器是否启动成功

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值