kafka概述

定义

Kafka一个开源分布式事件流平台(Event Streaming Plantform),主要用于大数据实时领域本质上是一个分布式基于发布/订阅模式消息队列(Message Queue)。

消息队列

大数据场景中主要采用Kafka 作为消息队列传统消息队列主要应用场景包括:缓存/削峰、解耦和异步通信
消息队列模式包含了 2 种,点对点订阅模式发布/订阅模式
在这里插入图片描述
Kafka采用发布/订阅模式,这种模式有以下特点:

Kafka 基础架构

在这里插入图片描述
为了方便扩展提高吞吐量,一个 topic可以分为多个 partition。为了配合分区设计,提出了消费者组的概念,组内每个消费者并行消费。为提高可用性每个 partition 增加若干可配置副本。在 2.8 之下的版本,将数据 leader提交给 Zookeeper 保管,2.8 版本之后,可以配置 zookeeper

Kafka 快速安装

规划

Hadoop101 Hadoop102 Hadoop103
ZK ZK ZK
Kafka Kafka Kafka

集群部署

  1. 下载地址https://archive.apache.org/dist/kafka/3.0.0/kafka_2.12-3.0.0.tgz
  2. 解压安装[logan@hadoop101 software]$ tar -zxf kafka_2.12-3.0.0.tgz -C /opt/module
  3. 创建链:[logan@hadoop101 module]$ ln -snf kafka_2.12-3.0.0/ kafka
  4. 进入到/opt/module/kafka/config/目录修改配置文件vim server.properties
#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
#kafka运行日志(数据)存放路径路径需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径路径路径之间可以用","分隔
log.dirs=/opt/module/kafka/data
#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
#配置连接Zookeeper集群地址(在zk根目录创建/kafka,方便管理zookeeper.connect=hadoop101:2181,hadoop102:2181,hadoop103:2181/kafka
  1. 分发安装包xsync /opt/module/kafka
  2. 分别在hadoop103和hadoop104上修改配置文件/opt/module/kafka/config/server.properties中的broker.id=1、broker.id=2
  3. 配置环境变量,在/etc/profile.d/my_env.sh文件中增加kafka环境变量配置。增加如下内容
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
  1. 刷新环境变量source /etc/profile
  2. 分发环境变量文件到其他节点,并source
  3. 启动 Zookeeper zk.sh start
  4. 编写 kafka 集群启动脚本vim ~/bin/kf.sh,增加执行权限chmod +x ~/bin/kf.sh
#! /bin/bash

case $1 in
"start"){
    for i in hadoop101 hadoop102 hadoop103
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
    done
};;
"stop"){
    for i in hadoop101 hadoop102 hadoop103
    do
        echo " --------停止 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh "
    done
};;
esac
  1. 启动集群 kf.sh start

kafka命令行操作

  1. topic操作命令
操作 指令
查看 kafka-topics.sh —bootstrapserver hadoop101:9092 —list
创建 kafka-topics.sh —bootstrapserver hadoop101:9092 —createpartitions 1 —replicationfactor 3 —topic first
查看 topic 详情 kafka-topics.sh —bootstrapserver hadoop101:9092 —describe —topic first
修改分区 kafka-topics.sh —bootstrap-server hadoop101:9092 –alter –topic firstpartitions 3
删除 topic kafka-topics.sh —bootstrap-server hadoop101:9092 —delete –topic first

说明

  1. 生产者命令行
kafka-console-producer.sh --bootstrap-server hadoop101:9092 --topic first

3.消费者命令行

# 消费first主题中的数据。
kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic first
# 从头开始消费主题所有数据
kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --from-beginning --topic first

原文地址:https://blog.csdn.net/qq_41758289/article/details/134759754

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_34026.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注