1.Kafka基础—Kafka 简介、发布/订阅模式、基础架构、Kafka 安装、使用、使用脚本启动 Kafka 集群

本文目录如下:

  • 第1章 Kafka 基本概念
    • 1.1 Kafka 简介
      • 1.1.1 消息队列模式—发布/订阅模式
    • 1.2 Kafka 基础架构
  • 第2章 Kafka 安装、使用、集成环境
    • 2.1 虚拟机环境准备
    • 2.2 Linux环境下安装Kafka环境
      • 2.2.1 集群规划
      • 2.2.2 安装Kafka
      • 2.2.3 操作 Kafka 集群
        • 2.2.3.1 前置条件: 启动Zookeeper集群
        • 2.2.3.2 启动集群
        • 2.2.3.3 关闭集群
        • 2.2.3.4 编写 kafka 群起脚本
        • 2.2.3.4 使用脚本操作 Kafka 集群

第1章 Kafka 基本概念

1.1 Kafka 简介

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

1.1.1 消息队列模式—发布/订阅模式

  • 一对多,消费者消费数据之后不会清除消息。
  • 消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消
    息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。
    1.Kafka基础—Kafka 简介、发布/订阅模式、基础架构、Kafka 安装、使用、使用脚本启动 Kafka 集群_第1张图片

1.2 Kafka 基础架构

1.Kafka基础—Kafka 简介、发布/订阅模式、基础架构、Kafka 安装、使用、使用脚本启动 Kafka 集群_第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副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower
  • (8) leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader
  • (9) follower:每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据的同步。leader 发生故障时,某个 follower 会成为新的 follower

第2章 Kafka 安装、使用、集成环境

2.1 虚拟机环境准备

  • (1) 虚拟机准备
    虚拟机的创建于配置在之前博客详细说过,需要的同学可以参考: Hadoop运行环境搭建中第1.1小节进行操作。

  • (2) 安装 JDK
    安装JDK在之前的博客中已经详细说过,没安装的同学可以参考: Hadoop运行环境搭建中第1.2小节进行操作。

  • (3) 安装 Zookeeper
    安装Zookeeper在之前的博客中已经详细说过,没安装的同学可以参考: Zookeeper基础—本地模式安装中第2.1小节进行操作。


2.2 Linux环境下安装Kafka环境

2.2.1 集群规划

hadoop100 hadoop101 hadoop102
zookeeper zookeeper zookeeper
kafka kafka kafka

2.2.2 安装Kafka

  • (1) 进入到Kafka安装包路径下
[xqzhao@hadoop100 ~]$ cd /opt/software/

注: Kafka安装包下载地址: 点击进入Kafka下载地址

  • (2) 解压安装文件到 /opt/module下面
[xqzhao@hadoop100 software]$ tar -zvxf kafka_2.11-2.4.0.tgz -C /opt/module/
  • (3) 查看是否解压成功
[xqzhao@hadoop100 software]$ ls /opt/module/
kafka_2.11-2.4.0

// 修改 `kafka_2.11-2.4.0` 的名称为 `kafka`
[xqzhao@hadoop100 module]$ mv kafka_2.11-2.4.0/ kafka
  • (4) 在 /opt/module/kafka 目录下创建 logs 文件夹
[xqzhao@hadoop100 kafka]$ mkdir logs
  • (5) 修改配置文件
[xqzhao@hadoop100 kafka]$ cd config/
[xqzhao@hadoop100 config]$ vim server.properties

输入以下内容:

#broker 的全局唯一编号,不能重复
broker.id=0
#删除 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=hadoop100:2181,hadoop101:2181,hadoop102:2181
  • (6) 配置环境变量
[xqzhao@hadoop100 module]$ sudo vim /etc/profile

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

[xqzhao@hadoop100 module]$ source /etc/profile
  • (7) 向集群中的其他主机分发安装包
[xqzhao@hadoop100 module]$ xsync kafka/
  • 注1分发之后记得配置其他机器的 环境变量
  • 注2: xsync 集群分发脚本在: Hadoop运行模式-完全分布式(重点) 中第 4.4小节 有详细描述。
  • (8) 分别在 hadoop101hadoop102 上修改配置文件 /opt/module/kafka/config/server.properties中的 broker.id=1broker.id=2
    注:broker.id 不得重复
[xqzhao@hadoop100 kafka]$ cd config/
[xqzhao@hadoop100 config]$ vim server.properties

2.2.3 操作 Kafka 集群

2.2.3.1 前置条件: 启动Zookeeper集群

使用脚本操作 Zookeeper 集群:

# 启动集群 Zookeeper 服务
[xqzhao@hadoop100 bin]$ zk.sh start

注1: **Zookeeper 集群安装配置等请参考博客: Zookeeper集群操作—集群安装、操作脚本 中第 3.1小节 的描述。
注2: Zookeeper 集群启动停止脚本请查看博客: Zookeeper集群操作—集群安装、操作脚本 中第 3.3.1小节 的描述。

2.2.3.2 启动集群

依次在 hadoop100hadoop101hadoop102 节点上启动 kafka

[xqzhao@hadoop100 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[xqzhao@hadoop101 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[xqzhao@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties

2.2.3.3 关闭集群

[xqzhao@hadoop100 kafka]$ bin/kafka-server-stop.sh stop
[xqzhao@hadoop101 kafka]$ bin/kafka-server-stop.sh stop
[xqzhao@hadoop102 kafka]$ bin/kafka-server-stop.sh stop

2.2.3.4 编写 kafka 群起脚本

  • (1) 在 hadoop100/home/xqzhao/bin 目录下创建 kk.sh 文件
[xqzhao@hadoop100 bin]$ sudo touch kk.sh
[xqzhao@hadoop100 bin]$ sudo vim kk.sh

在该文件中编写如下代码:

#!/bin/bash
case $1 in
"stop"){
     
	for i in hadoop100 hadoop101 hadoop102
	do
		echo ------------ Kafka $i 关闭 ------------
		ssh $i '/opt/module/kafka/bin/kafka-server-stop.sh /opt/module/kafka/config/server.properties'
	done
}
;;
"start"){
     
	for i in hadoop100 hadoop101 hadoop102
	do
		echo ------------ Kafka $i 启动 ------------
		ssh $i '/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties'
	done
}
;;
esac
  • (2) 修改脚本 kk.sh 具有执行权限
[xqzhao@hadoop100 bin]$ sudo chmod 777 kk.sh

2.2.3.4 使用脚本操作 Kafka 集群

# 启动集群 Kafka 服务
[xqzhao@hadoop100 bin]$ kk.sh start
`博主这里不知什么原因 start 不了,但是 stop 是可以用的`

# 关闭集群 Kafka 服务
[xqzhao@hadoop100 bin]$ kk.sh stop

声明:本文是学习时记录的笔记,如有侵权请告知删除!
原视频地址:https://www.bilibili.com/video/BV1EZ4y1G7iL

你可能感兴趣的:(Kafka学习笔记,kafka,big,data,java)