kafka快速入门

kafka基础架构

图片来源于尚硅谷

Producer:消息生产者,就是向kafka broker发消息的客户端。

Consumer:消息消费者,向kafka broker取消息的客户端。

Consumer Group(CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。

Broker:一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。

Topic:可以理解为一个队列,生产者和消费者面向的都是一个topic。

Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分成多个partition,每个partition是一个有序的队列。

Replica:副本。一个topic的每个分区都要若干个副本,一个Lader和若干个Follower。

Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是Lader。

Follower:每个分区多个副本中的“从”,实时从Lader中同步数据,保持和Lader数据的同步。Lader发生故障时,某个Follower会成为新的Lader。

安装部署

集群规划
hadoop102hadoop103hadoop104
zkzkzk
kafkakafkakafka

集群部署

Kafka官网下载网址:http://kafka.apache.org/downloads.html

在路径/opt/softwaer/下安装kafka

解压安装包

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

修改解压后的文件名称

[atguigu@hadoop102 software]$ mv kafka_2.12-3.0.0/ kafka

进入到/opt/module/kafka/config/中,修改配置文件

[atguigu@hadoop102 config]$ vim server.properties

修改内容如下:

broker.id=0

log.dirs=/opt/module/kafka/datas

zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

分发kafka

[atguigu@hadoop102 module]$ xsync kafka/

分别在 hadoop103 和 hadoop104 上修改配置件/opt/module/kafka/config/server.properties 中的 broker.id=1、broker.id=2

注:broker.id 不得重复,整个集群中唯一。

配置环境变量

在/etc/profile.d/my_env.sh 文件中增加 kafka 环境变量配置

[atguigu@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

添加内容如下:

#KAFKA_HOME

export KAFKA_HOME=/opt/module/kafka

export PATH=$PATH:$KAFKA_HOME/bin

刷新一个环境变量

[atguigu@hadoop102 module]$ source /etc/profile

分发环境变量文件到其他节点,并 source

[atguigu@hadoop102 module]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh

[atguigu@hadoop103 module]$ source /etc/profile

[atguigu@hadoop104 module]$ source /etc/profile

启动集群

先启动zookeeper集群,然后启动Kafka

[atguigu@hadoop102 kafka]$ zk.sh start

依次分别在Hadoop102、Hadoop103、Hadoop104节点上启动kafka

[atguigu@hadoop102 kafka]$ bin/kafka-server-start.sh -daemonconfig/server.properties

[atguigu@hadoop103 kafka]$ bin/kafka-server-start.sh -daemonconfig/server.properties

[atguigu@hadoop104 kafka]$ bin/kafka-server-start.sh -daemonconfig/server.properties

注意:配置文件的路径要能够到 server.properties。

关闭集群

[atguigu@hadoop102 kafka]$ bin/kafka-server-stop.sh 

[atguigu@hadoop103 kafka]$ bin/kafka-server-stop.sh 

[atguigu@hadoop104 kafka]$ bin/kafka-server-stop.sh

注意:关闭Kafka集群时,需要等待几秒,否则Kafka还没有完全关闭就先关闭zookeeper集群,到时候会使集群关闭不了,到时候只能杀死进程。

集群启停脚本

在/home/atguigu/bin目录下创建文件kf.sh脚本文件

[atguigu@hadoop102 bin]$ vim kf.sh

脚本内容如下: 

#! /bin/bash
case $1 in
"start"){
 for i in hadoop102 hadoop103 hadoop104
 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 hadoop102 hadoop103 hadoop104
 do
 echo " --------停止 $i Kafka-------"
 ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh "
 done
};;
esac

添加执行权限

[atguigu@hadoop102 bin]$ chmod 777 kf.sh

启动集群命令

[atguigu@hadoop102 bin]$ kf.sh start

停止集群命令

[atguigu@hadoop102 bin]$ kf.sh stop

注意:停止 Kafka 集群时,一定要等 Kafka 所有节点进程全部停止后再停止 Zookeeper 集群。因为 Zookeeper 集群当中记录着 Kafka 集群相关信息,Zookeeper 集群一旦先停止, Kafka 集群就没有办法再获取停止进程的信息,只能手动杀死 Kafka 进程了。

Kafak命令行操作 

kafka基础架构

主题命令行操作

查看操作主题命令参数

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh
参数描述
--bootstrap-server <String:server toconnect to>连接的Kafka Broker主机名称和端口号
--topic <String:topic>操作topic名称
--create创建主题
--delete删除主题
--alter修改主题
--list查看所有主题
--describe查看主题详细描述
--replication<Integer:#of partitions>设置分区数
--replication-factor<Integer:replication factor>设置分区副本
--config<String:name=value>更新系统默认的配置

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

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list

创建 first 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 定义分区数

查看 first 主题的详情

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic first

修改分区数(注意:分区数只能增加,不能减少)

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

再次查看 first 主题的详情

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic first

删除topic

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --delete --topic first

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值