集群安装

因为官方文档整理的不好,所以按照《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集群安装及基本命令行使用的更多相关文章

  1. kafka集群安装部署

    kafka集群安装 使用的版本 系统:centos6.5 centos6.7 jdk:1.7.0_79 zookeeper:3.4.9 kafka:2.10-0.10.1.0 一.环境准备[只列,不具 ...

  2. zookeeper+kafka集群安装之二

    zookeeper+kafka集群安装之二 此为上一篇文章的续篇, kafka安装需要依赖zookeeper, 本文与上一篇文章都是真正分布式安装配置, 可以直接用于生产环境. zookeeper安装 ...

  3. zookeeper+kafka集群安装之一

    zookeeper+kafka集群安装之一 准备3台虚拟机, 系统是RHEL64服务版. 1) 每台机器配置如下: $ cat /etc/hosts ... # zookeeper hostnames ...

  4. zookeeper+kafka集群安装之中的一个

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/cheungmine/article/details/26678877 zookeeper+kafka ...

  5. KafKa集群安装详细步骤

    最近在使用Spring Cloud进行分布式微服务搭建,顺便对集成KafKa的方案做了一些总结,今天详细介绍一下KafKa集群安装过程: 1. 在根目录创建kafka文件夹(service1.serv ...

  6. Kafka 集群安装

    Kafka 集群安装 环境: Linux 7.X kafka_2.x 在linux操作系统中,kafka安装在 /u04/app目录中 1. 下载 # wget https://mirrors.cnn ...

  7. KafKa集群安装、配置

    一.事前准备 1.kafka官网:http://kafka.apache.org/downloads. 2.选择使用版本下载. 3.kafka集群环境准备:(linux) 192.168.145.12 ...

  8. Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装

    Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装 集群规划: hostname Zookeeper Kafka kafka-eagle kafka01 √ √ √ kaf ...

  9. (Linux环境Kafka集群安装配置及常用命令

    Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...

随机推荐

  1. flex embed 使用

    Flex 软件中经常需要使用一些外部的资源,如图片.声音.SWF或字体,虽然你也可以在软件运行的时候引入和载入,但是也可能经常需要直接将这些资源编译(Compile)到软件中,也就是直接嵌入资源(Em ...

  2. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_4_字节输出流写入数据到文件

    数据由内存写入到硬盘中 构造函数传的路径是一个相对路径.有异常需要捕获异常 释放资源 这三个方法,都有异常 IO异常是父类,所以这里只需要抛出IO异常就可以了. 运行程序.目录内多了个a.txt文件 ...

  3. Win32InputBox,C接口的,实现类似VB的InputBox的功能

    #ifndef __03022006__WIN32INPUTBOX__ #define __03022006__WIN32INPUTBOX__ /* This library is (c) Elias ...

  4. [Python3 填坑] 010 isalpha() 对于字母的定义

    目录 1. print( 坑的信息 ) 2. 开始填坑 官方文档 1. print( 坑的信息 ) 挖坑时间:2019/01/14 明细 坑的编码 内容 Py009-1 isalpha() 理当只有输 ...

  5. [2019杭电多校第五场][hdu6628]permutation 1

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6628 题意为求字典序第k小的差异数组,差异数组p满足p[i]=a[i+1]-a[i]. 头铁的爆搜,因 ...

  6. [常用类]Math、Random、System、BigInteger、BigDecimal

    Math类中的成员全是静态成员,构造方法是 私有的,以避免被创建对象 常用方法: int abs() double ceil() //向上取整 double floor() //向下取整 int ma ...

  7. 使用pdfobject.js实现在线浏览PDF

    1.pdfobject.js官网:https://pdfobject.com/ 2.在html文件中引入这个文件,以pdfobject.min.js为例 <script type="t ...

  8. python字符串的运算有哪些

    python字符串的运算有哪些 1,链接符号 + 2,判断字符串是否在某个字符串中 ‘s’ in ‘this’ 返回bool 3,字符串索引 a="this a my" a[0], ...

  9. P3724 [AH2017/HNOI2017]大佬

    传送门 发现保持自信和做其他事情互不干扰,可以直接做一次 $dp$ 求出最多能空出几天来怼大佬 然后就变成给你若干天,是否能怼死大佬,考虑求出所有的 天数和输出的嘲讽值集合,因为天数不多,嘲讽值增长很 ...

  10. 媒介查询demo

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...