kafka集群安装及基本命令行使用
集群安装
因为官方文档整理的不好,所以按照《Kafka入门与实践》这本书学习,学习的版本是0.10.1.1,学习完后再关注高版本的变化及新增的特性即可。
环境介绍
本次安装kafka集群利用的是自带的zooKeeper,其实最好是把kafka和zooKeeper部署在不同的节点上,这样更高可用。
三个节点:
kafka1:192.168.56.100
kafka2:192.168.56.101
kafka2:192.168.56.102
zooKeeper所需的三个端口:
2181:对客户端提供服务
2888:集群内节点通信使用
3888:选举leader使用
kafka所需的端口:9092:对客户端提供服务
选用kafka版本:kafka_2.12-2.2.0.tgz,kafka版本是2.2.0,scala版本是2.12。上传到kafka1节点,解压到/home/koushengrui/app目录,即KAFKA_HOME是/home/koushengrui/app/kafka_2.12-2.2.0。配置文件在config子目录中,命令在bin子目录中,日志在logs子目录中。
zooKeeper的相关配置,修改zookeeper.properties:
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=0
tickTime=2000
initLimit=20
syncLimit=10
server.1=192.168.56.100:2888:3888
server.2=192.168.56.101:2888:3888
server.3=192.168.56.102:2888:3888
kafka的相关配置,修改server.properties:
broker.id=1
listeners=PLAINTEXT://192.168.56.100:9092
log.dirs=/data/kafka-logs
log.retention.check.interval.ms=300000
log.retention.hours=168
log.segment.bytes=1073741824
num.io.threads=4
num.partitions=3
default.replication.factor=2
num.network.threads=3
num.recovery.threads.per.data.dir=1
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
socket.send.buffer.bytes=102400
zookeeper.connect=192.168.56.100:2181,192.168.56.101:2181,192.168.56.102:2181
zookeeper.connection.timeout.ms=10000
fetch.message.max.bytes=52428800
replica.fetch.max.bytes=52428800
delete.topic.enable=true
其中,num.partitions=3表示默认分区个数是3,即每个topic都有3个分区。default.replication.factor=2表示默认副本因子是2,即每个分区有2个副本。log.dirs表示的是kafka的数据目录,换句话说是topic数据目录,里面存放了segment日志段。kafka服务本身的日志默认会放在${KAFKA_HOME}/logs,即放在与config目录同级的logs目录中,如果我们想改变这个目录,则需要修改bin目录中的kafka-run-class.sh脚本,搜索LOG_DIR,在这一行的上面指定LOG_DIR的值,如LOG_DIR=/root/logs。
创建zooKeeper的数据目录/data/zookeeper,并在其中创建myid文件,内容为1。
复制kafka_2.12-2.2.0目录到kafka2、kafka3节点,并对这两个节点的server.properties做稍微修改,修改broker.id和listeners的值。此外,还要这两个节点上都创建/data/zookeeper目录和/data/zookeeper/myid文件,内容分别是2和3。
在三个节点上分别执行下面命令以启动zooKeeper集群。注意,在启动zookeeper时必须显式指定zookeeper的配置文件,否则会启动不成功。
cd $KAFKA_HOME/bin;nohup ./zookeeper-server-start.sh ../config/zookeeper.properties &
可以在各节点通过jps命令查看zooKeeper是否启动成功。启动成功的话,可以看到QuorumPeerMain进程。
执行cd $KAFKA_HOME/bin;zookeeper-shell.sh 192.168.56.100:2181后可以执行zookeeper客户端命令,如ls /。可以看到此时有个/zookeeper节点,zookeeper节点下面有/zookeeper/quota子节点。
在三个节点上分别执行下面命令以启动kafka集群:注意,在启动kafka时必须显式指定kafka的配置文件,否则会启动不成功
cd $KAFKA_HOME/bin;nohup ./kafka-server-start.sh ../config/server.properties &
这个时候再用jps命令,如果kafka启动成功的话,可以看到kafka进程。至于哪个节点是kafkaController,可以通过各节点的logs目录中的controller.log看出来。再连接上zookeeper,可以看到此时新增了cluster,controller_epoch,controller,brokers,admin,isr_change_notification,consumers,log_dir_event_notification,latest_producer_id_block,config节点。
get /controller也可以看到leader controller是哪台broker
其实每个节点都包含着很多信息,以后再研究。
基本命令行使用:(命令在$KAFKA_HOME/bin目录中)
1、查看kafka集群有哪些topic:
kafka-topics.sh --list --zookeeper 192.168.56.100:2181
2、查看kafka集群所有topic分区及其副本情况:
kafka-topics.sh --describe --zookeeper 192.168.56.100:2181
当然,如果添加--topic test,就可以只看test这个topic的分区及其副本情况。
3、创建一个新的topic:
kafka-topics.sh --create --topic test --partitions 3 --replication-factor 3 --zookeeper 192.168.56.100:2181
4、修改某topic的分区数。分区数只能新增,不能减少。
5、控制台往某topic中生产消息:
kafka-console-producer.sh --topic test --broker-list 192.168.56.100:9092
6、查看某topic各分区消息偏移量:
kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -2 --broker-list 192.168.56.100:9092 // 查看最小偏移量
kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list 192.168.56.100:9092 // 查看最大偏移量
7、控制台消费某topic:
kafka-console-consumer.sh --topic test --bootstrap-server 192.168.56.100:9092 --from-beginning
8、查看所有的消费组:
kafka-consumer-groups.sh --list --bootstrap-server 192.168.56.100:9092
9、查看某消费组的消费情况:
kafka-consumer-groups.sh --describe --group console-consumer-44081 --bootstrap-server 192.168.56.100:9092
其中console-consumer-44081是消费组名。
koushengrui@koushengrui ~ % kafka-consumer-groups --describe --group my-test-consumer-group2 --bootstrap-server 127.0.0.1:9092
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
my-test-consumer-group2 test 0 28 30 2 consumer-1-326f898c-c3e0-4798-b28a-cf08d31fc008 /127.0.0.1 consumer-1
my-test-consumer-group2 test 1 27 30 3 consumer-1-326f898c-c3e0-4798-b28a-cf08d31fc008 /127.0.0.1 consumer-1
my-test-consumer-group2 test 2 27 30 3 consumer-1-326f898c-c3e0-4798-b28a-cf08d31fc008 /127.0.0.1 consumer-1
如上,可看出每一个分区的消息偏移量及消费偏移量及对应的消费者id。
kafka集群安装及基本命令行使用的更多相关文章
- kafka集群安装部署
kafka集群安装 使用的版本 系统:centos6.5 centos6.7 jdk:1.7.0_79 zookeeper:3.4.9 kafka:2.10-0.10.1.0 一.环境准备[只列,不具 ...
- zookeeper+kafka集群安装之二
zookeeper+kafka集群安装之二 此为上一篇文章的续篇, kafka安装需要依赖zookeeper, 本文与上一篇文章都是真正分布式安装配置, 可以直接用于生产环境. zookeeper安装 ...
- zookeeper+kafka集群安装之一
zookeeper+kafka集群安装之一 准备3台虚拟机, 系统是RHEL64服务版. 1) 每台机器配置如下: $ cat /etc/hosts ... # zookeeper hostnames ...
- zookeeper+kafka集群安装之中的一个
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/cheungmine/article/details/26678877 zookeeper+kafka ...
- KafKa集群安装详细步骤
最近在使用Spring Cloud进行分布式微服务搭建,顺便对集成KafKa的方案做了一些总结,今天详细介绍一下KafKa集群安装过程: 1. 在根目录创建kafka文件夹(service1.serv ...
- Kafka 集群安装
Kafka 集群安装 环境: Linux 7.X kafka_2.x 在linux操作系统中,kafka安装在 /u04/app目录中 1. 下载 # wget https://mirrors.cnn ...
- KafKa集群安装、配置
一.事前准备 1.kafka官网:http://kafka.apache.org/downloads. 2.选择使用版本下载. 3.kafka集群环境准备:(linux) 192.168.145.12 ...
- Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装
Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装 集群规划: hostname Zookeeper Kafka kafka-eagle kafka01 √ √ √ kaf ...
- (Linux环境Kafka集群安装配置及常用命令
Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...
随机推荐
- 基于Skyline的web开发(6.x)
多窗口对比 一个页面加载多个TerraExplorer3DWindow和SGWorld等只有第一个能用(即使用iframe也是一样) 所以我决定打开两个新页面实现多窗口对比,然后我在<主页面&g ...
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_11_反射_案例
student定义sleep方法 用反射+配置文件 定义配置文件 src下new file.新建 加载配置文件.Properties里面有一个load方法,可以加载.properties结尾的配置文件 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_4_Map集合遍历键找值方式
键找值的方式 增强for 增强for的简化方式
- postman的断言/环境变量的处理
我们做接口测试都会有一个断言操作:也有一个变量被频繁使用,这时候可以用环境变量来处理 目录 1.postman之断言 2.postman之环境变量 1.postman之断言 同样以postman的登录 ...
- 简述Vue中的计算属性
1.什么是计算属性 如果模板中的表达式存在过多的逻辑,那么模板会变得臃肿不堪,维护起来也异常困难,因此为了简化逻辑出现了计算属性: <template> <div id=" ...
- [Git] 008 status 与 commit 命令的补充
本文的"剧情"承接 [Git] 007 三棵树以及向本地仓库加入第一个文件 1. 对 "status" 的补充 1.1 "status" 有 ...
- Java数据结构之稀疏数组(Sparse Array)
1.需求 编写的五子棋程序中,有存盘退出和续上盘的功能.因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,为了压缩存储所以采用稀疏数组. 2.基本介绍 当一个数组中大部分元素为0,或者为 ...
- Ad Hoc Distributed Queries / xp_cmdshell 的启用与关闭
启用Ad Hoc Distributed Queries: reconfigure reconfigure 关闭Ad Hoc Distributed Queries: reconfigure reco ...
- vscode怎么修改颜色主题里的某种颜色
我习惯用深色主题, 齿轮--->颜色主题 ---->monokai是我的菜. 比较精神,又不刺眼. 但是这个主题的注释的颜色太浅了. 几乎和背景重合. 注释很重要, 能体现和记录自己的代码 ...
- RandomAccessFile类使用说明
RandomAccessFile类是Java Io体系中功能最为丰富的文件访问类,它提供了众多的文件访问方法.RandomAccessFile类支持“随机访问”方式,这里的“随机”是指程序可以直接跳到 ...