当前位置: 首页 > news >正文

Kafka 集群安装及常用命令

搭建 Kafka 服务集群

三台服务器(ns1,ns2,ns3),构成集群;

下载解压

下载地址:http://kafka.apache.org/downloads

$ tar xzvf kafka_2.11-2.4.1.tgz -C /home/hadoop/local/

$ ln -s kafka_2.11-2.4.1 kafka

修改配置

$ vim conf/server.properties

修改 id:

broker.id=1

ns1 服务器为 1,ns2 服务器为 2,ns3 服务器为 3

修改存放数据目录:

log.dirs=/home/hadoop/local/kafka/datas

修改 Zookeeper 服务器地址:

zookeeper.connect=ns1:2181,ns2:2181,ns3:2181/kafka

最后的 /kafka 可以不写,如果不写会将所有数据写到根节点 / 下,写了 /kafka 后就会将数据存到 /kafka 节点下;

配置环境变量

$ sudo vim /etc/profile.d/my_env.sh

KAFKA_HOME=/home/hadoop/local/kafka                                                                                                                          
PATH=$PATH:$KAFKA_HOME/bin                                                                            
export KAFKA_HOME PATH  

$ source /etc/profile

分发配置

分发 Kafka

$ cd /home/hadoop/local/

$ xsync kafka_2.11-2.4.1

$ xsync kafka

分发环境变量

$ sudo xsync /etc/profile.d/my_env.sh

在 ns2、ns3 上执行下:

$ source /etc/profile

ns2、ns3 上修改下 broker.id 为 2 和 3

$ vim /home/hadoop/local/kafka/conf/server.properties

启动服务

启动 Kafka 前一定要先把 Zookeeper 集群启动好;

在 ns1、ns2、ns3 上都执行启动命令:

$ kafka-server-start.sh -daemon /home/hadoop/local/kafka/config/server.properties

检查进程:

$ myjps.sh

========== ns1 JPS ==========                                                                                                                                
4208 Jps                                                                                                                                                     
4115 Kafka                                                                                                                                                   
24836 DataNode                                                                                                                                               
25014 NodeManager                                                                                                                                            
24711 NameNode                                                                                                                                               
10666 JobHistoryServer                                                                                                                                       
2571 QuorumPeerMain                                                                                                                                          
========== ns2 JPS ==========                                                                                                                                
7204 DataNode                                                                                                                                                
7638 ResourceManager                                                                                                                                         
7895 NodeManager                                                                                                                                             
25544 Jps                                                                                                                                                    
22878 QuorumPeerMain                                                                                                                                         
25454 Kafka                                                                                                                                                  
========== ns3 JPS ==========                                                                                                                                
11364 NodeManager                                                                                                                                            
10917 DataNode                                                                                                                                               
19638 Jps                                                                                                                                                    
11116 SecondaryNameNode                                                                                                                                      
18189 QuorumPeerMain                                                                                                                                         
19551 Kafka  

都启动了;

停止服务:

$ kafka-server-stop.sh

集群启停脚本

写一个可以在 ns1 一台服务器上就能启动、停止整个集群的脚本;

$ vim /home/hadoop/bin/kafka.sh

#!/bin/bash                                                                                                                                                  
if [ $# -lt 1 ]                                                                                                                                              
then                                                                                                                                                         
        echo "USAGE: kafka.sh {start|stop}"                                                                                                                  
        exit                                                                                                                                                 
fi                                                                                                                                                           
case $1 in                                                                                                                                                   
start)                                                                                                                                                       
        for i in ns1 ns2 ns3                                                                                                                                 
        do                                                                                                                                                   
                echo "================ START $i KAFKA ==================="                                                                                   
                ssh $i /home/hadoop/local/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/local/kafka/config/server.properties                            
        done                                                                                                                                                 
;;                                                                                                                                                           
stop)                                                                                                                                                        
        for i in ns1 ns2 ns3                                                                                                                                 
        do                                                                                                                                                   
                echo "================ STOP $i KAFKA ==================="                                                                                    
                ssh $i /home/hadoop/local/kafka/bin/kafka-server-stop.sh                          
        done                                                                                                                                                 
;;                                                                                                                                                           
*)                                                                                                                                                           
        echo "USAGE: kafka.sh {start|stop}"                                                                                                                  
        exit                                                                                                                                                 
;;                                                                                                                                                           
esac 

$ chmod u+x /home/hadoop/bin/kafka.sh

启动:

$ kafka.sh start

================ START ns1 KAFKA ===================                                                                                                         
================ START ns2 KAFKA ===================                                                                                                         
================ START ns3 KAFKA ===================  

查看:

$ myjps.sh

========== ns1 JPS ==========                                                                                                                                
24836 DataNode                                                                                                                                               
25014 NodeManager                                                                                                                                            
24711 NameNode                                                                                                                                               
10666 JobHistoryServer                                                                                                                                       
2571 QuorumPeerMain                                                                                                                                          
5259 Jps                                                                                                                                                     
5164 Kafka                                                                                                                                                   
========== ns2 JPS ==========                                                                                                                                
26577 Kafka                                                                                                                                                  
7204 DataNode                                                                                                                                                
7638 ResourceManager                                                                                                                                         
7895 NodeManager                                                                                                                                             
26652 Jps                                                                                                                                                    
22878 QuorumPeerMain                                                                                                                                         
========== ns3 JPS ==========                                                                                                                                
20659 Jps                                                                                                                                                    
11364 NodeManager                                                                                                                                            
10917 DataNode                                                                                                                                               
11116 SecondaryNameNode                                                                                                                                      
18189 QuorumPeerMain                                                                                                                                         
20574 Kafka 

关闭:

$ kafka.sh stop

Kafka 命令行操作

1)创建 Topic

$ kafka-topics.sh --create --topic zsoft1 --bootstrap-server ns1:9092 --partitions 2 --replication-factor 3

此命令中的 --bootstrap-server 也可以写成 --zookeeper,指定 zookeeper 地址也可以,写为:

$ kafka-topics.sh --create --topic zsoft1 --zookeeper ns1:2181/kafka --partitions 2 --replication-factor 3

partitions:分区,分区数量可以根据情况设置;

replication-factor:副本,副本数量要

2)查看 Topic 列表

$ kafka-topics.sh --list --bootstrap-server ns1:9092

zsoft1

3)查看详情

查看所有 Topic 的详情

$ kafka-topics.sh --describe --bootstrap-server ns1:9092

Topic: zsoft1   PartitionCount: 2       ReplicationFactor: 3    Configs: segment.bytes=1073741824                                                            
        Topic: zsoft1   Partition: 0    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3                                                                           
        Topic: zsoft1   Partition: 1    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1

查看某个 Topic 的详情

$ kafka-topics.sh --describe --bootstrap-server ns1:9092 --topic zsoft

Topic: zsoft1   PartitionCount: 2       ReplicationFactor: 3    Configs: segment.bytes=1073741824                                                            
        Topic: zsoft1   Partition: 0    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3                                                                           
        Topic: zsoft1   Partition: 1    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1

因为我当前只有一个 topic,因此显示的是一样的;

4)删除 Topic

$ kafka-topics.sh --delete --topic zsoft --bootstrap-server ns1:9092

5)Kafka 生产者

在一个 shell 窗口中启动生产者,向 zsoft1 这个 Topic 里面生产数据:

$ kafka-console-producer.sh --topic zsoft1 --broker-list ns1:9092

> a
> b
> c

6)Kafka 消费者

在一个 shell 窗口中启动消费者,消费 zsoft1 这个 Topic 里面的数据:

$ kafka-console-consumer.sh --topic zsoft1 --bootstrap-server ns1:9092

a
b
c

从第一条开始消费(即打开消费者终端以前进入到 topic 中的消息也消费一次),添加 --from-beginning

$ kafka-console-consumer.sh --topic zsoft1 --bootstrap-server ns1:9092 --from-beginning

7)指定组,消费信息:

在 ns2 的 shell 启动消费者,指定组为 g1

$ kafka-console-consumer.sh --topic zsoft1 --bootstrap-server ns1:9092 --group g1

在 ns3 的 shell 启动消费者,指定组也为 g1

$ kafka-console-consumer.sh --topic zsoft1 --bootstrap-server ns1:9092 --group g1

此时在生产者 console 中输入信息,会交替由 ns2 和 ns3 的消费者 console 消费,消息不会重复消费;

Kafka 压力测试

1)Kafka Producer 压测

(1)测试命令:

$ kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=ns1:9092,ns2:9092,ns3:9092

说明:

  • record-size:是一条信息有多大,单位是字节;
  • num-records:是总共发送多少条信息;
  • throughput:是每秒多少条信息,设成 -1,表示不限流,以最大能力去写,可测出生产者最大吞吐量;
  • 测试用的 test topic,要设置成单分区,这样以后要想性能提升时候,增加分区即可;
  • test 可以不提前创建,当数据进入时会自动创建没有的 topic,默认创建的是单分区、单副本的 topic;

(2)测试输出:

[2022-08-31 17:38:35,478] WARN [Producer clientId=producer-1] Error while fetching metadata with correlation id 1 : {test=LEADER_NOT_AVAILABLE} (org.apache.k
afka.clients.NetworkClient)                                                                                                                                  
100000 records sent, 73313.782991 records/sec (6.99 MB/sec), 326.70 ms avg latency, 706.00 ms max latency, 306 ms 50th, 665 ms 95th, 697 ms 99th, 705 ms 99.9th. 
  • latency:延时
  • 吞吐量为 6.99 MB/sec
  • 写入的平均延时为 326.70 ms
  • 最大延时:706 ms
  • 306 ms 50th, 665 ms 95th, 697 ms 99th, 705 ms 99.9th.: 50%的消息 306ms 发送完,95%的消息 665ms 发送完,99%的消息 697ms 发送完,99.9% 的消息 705ms 发送完;

2)Kafka Consumer 压力测试

$ kafka-consumer-perf-test.sh --broker-list ns1:9092,ns2:9092,ns3:9092 --topic test --fetch-size 10000 --messages 500000 --threads 1

说明:

  • --fetch-size:指定每次 fetch 的数据大小;
  • --messages:总共要消费的消息个数;

输出:

start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec           
WARNING: Exiting before consuming the expected number of messages: timeout (10000 ms) exceeded. You can use the --timeout option to increase the timeout.    
2022-08-31 17:48:22:464, 2022-08-31 17:48:35:540, 9.5367, 0.7293, 100000, 7647.5987, 1661939303609, -1661939290533, -0.0000, -0.0001  
  • 共消费数据 9.5367MB
  • 吞吐量 0.7293 MB/s
  • 共消费 100000 条
  • 平均每秒消费 7647.5987 条

可以根据这些值判断预计消费量需要启几个消费者进行消费;

Kafka 机器数量计算

Kafka 机器数量 = 2 * (峰值生产速度 * 副本数 / 100)+ 1

Kafka 分区数计算

分区数 = Tt / min(Tp, Tc)

Tp:producer 吞吐量

Tc:consumer 吞吐量

分区数一般设置为:3 ~ 10个

相关文章:

  • C++变量和基本类型
  • 室温熔盐-Romm Temperature Melten Salt-RTMS-离子液体
  • 无胁科技-TVD每日漏洞情报-2022-9-1
  • C++征途 --- 内建函数对象
  • 李沐d2l(十一)--图像增广
  • ubuntu 环境安装微信
  • pdf怎么压缩到又小又清晰?
  • 三目运算符的多层嵌套
  • 【一生一芯】Chap.1 “一生一芯”实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题
  • Centos7 Redis安装
  • action通信
  • 数据湖架构及概念简介
  • 根据CI模式弄的一个python3访问MSSQL数据库的class
  • DRM系列(6)之drm_atomic_state数据结构
  • IPV4与IPV6的双栈配置
  • 分享一款快速APP功能测试工具
  • [译] 怎样写一个基础的编译器
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Javascript编码规范
  • java多线程
  • js数组之filter
  • Less 日常用法
  • Netty 4.1 源代码学习:线程模型
  • Python3爬取英雄联盟英雄皮肤大图
  • ReactNative开发常用的三方模块
  • yii2权限控制rbac之rule详细讲解
  • 读懂package.json -- 依赖管理
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 后端_ThinkPHP5
  • 免费小说阅读小程序
  • 如何合理的规划jvm性能调优
  • 树莓派 - 使用须知
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 新手搭建网站的主要流程
  • 由插件封装引出的一丢丢思考
  • 转载:[译] 内容加速黑科技趣谈
  • 06-01 点餐小程序前台界面搭建
  • 说说我为什么看好Spring Cloud Alibaba
  • 昨天1024程序员节,我故意写了个死循环~
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (LeetCode C++)盛最多水的容器
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (五)c52学习之旅-静态数码管
  • (一)RocketMQ初步认识
  • (转)ABI是什么
  • (转)关于多人操作数据的处理策略
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .Net IE10 _doPostBack 未定义
  • .NET6 命令行启动及发布单个Exe文件
  • .NET正则基础之——正则委托