Kafka基础学习

Kafka安装及使用教程:

  1. 引用文章(必要时阅读)
    zookeeper安装详细教程
    kafka安装及部署
    kafka吞吐量测试案例
    大白话kafka架构
    秒懂kafka高可用

  2. 环境准备
    kafka下载地址:https://kafka.apache.org/downloads(截止本文最后一次修改,kafka最新版本为3.1.0)
    zookeeper下载地址:http://archive.apache.org/dist/zookeeper/

  3. 安装zookeeper
    下载并解压zookeeper 将以下内容粘贴至 /etc/profile 需更新ZOOKEEPER_HOME 地址,必要时添加JAVA_HOME地址

    JAVA_HOME=/usr/java/jdk1.7.0_51
    ZOOKEEPER_HOME=/usr/local/logdeal/zookeeper-3.4.6   
    PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH   
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$ZOOKEEPER_HOME/lib:
    TOMCAT_HOME=/usr/local/tomcat7 CATALINA_HOME=/usr/local/tomcat7   
    export ZOOKEEPER_HOME export JAVA_HOME
    export PATH export CLASSPATH 
    export TOMCAT_HOME export CATALINA_HOME
    export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
    

    将$ZOOKEEPER_HOME/conf/目录下zoo_sample.cfd文件名称改为zoo.cfg
    在bin文件夹下 执行 ./zkServer.sh start 命令启动 ./zkServer.sh stop 命令停止
    netstat -tunlp|grep 2181 #查看zookeeper端口是否成功启动

  4. 安装kafka
    下载并解压kafka后 修改其配置文件

    listeners=PLAINTEXT://0.0.0.0:9092
    advertised.listeners=PLAINTEXT://linux主机:9092
    

    在kafka目录下输入 bin/kafka-server-start.sh config/server.properties & 启动项目
    systemctl stop firewalld.service关闭防火墙 否则外部无法访问

  5. 单机连通性测试

    bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test
    

    执行以上命令后,输入传输内容,后打开新的命令窗口输入以下命令,接受到消息则表示成功

    bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning
    
  6. 搭建单机环境中的broker集群
    config/server.properties配置信息:

    broker.id=0
    listeners=PLAINTEXT://:9092
    port=9092
    host.name=127.0.0.1
    num.network.threads=4
    num.io.threads=8
    socket.send.buffer.bytes=102400
    socket.receive.buffer.bytes=102400
    socket.request.max.bytes=104857600
    log.dirs=/tmp/kafka-logs
    num.partitions=5
    num.recovery.threads.per.data.dir=1
    log.retention.hours=168
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    log.cleaner.enable=false
    zookeeper.connect=127.0.0.1:2181
    zookeeper.connection.timeout.ms=6000
    queued.max.requests =500
    log.cleanup.policy = delete

    broker.id为集群中唯一的标注一个节点,所以修改id 及监听端口,生成server2.properties及server3.properties
    启动所有broker

    bin/kafka-server-start.sh config/server.properties &   #启动broker0
    bin/kafka-server-start.sh config/server1.properties & #启动broker1
    bin/kafka-server-start.sh config/server2.properties & #启动broker2
    

    查看端口运行情况

    netstat -tunlp|egrep "(2181|9092|9093|9094)"
    

    模拟客户端发送,接受消息
    发送消息:

    bin/kafka-console-producer.sh --topic test --broker-list 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094
    

    接收消息:

     bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning
    
  7. 测试kafka写入吞吐量

    bin/kafka-producer-perf-test.sh --num-records 10000000 --record-size 1024 --topic test --throughput 200000 --producer-props bootstrap.servers=127.0.0.1:9092 > logs/test.log
    

    相关参数说明:
    —topic
    指定Kafka集群的topic名称,本例test
    –num-records  总共需要发送的消息数
    –record-size
    每个记录的字节数
    –throughput
    每秒钟发送的记录数
    –producer-props bootstrap.servers=10.1.2.101:9092
    很显然是kafka集群的broker地址

    cat test.log #查看Kafka写入日志
    

    10000000 records sent, 25350.534516 records/sec (24.76 MB/sec), 340.58 ms avg latency, 5637.00 ms max latency, 26 ms 50th, 2143 ms 95th, 3059 ms 99th, 5402 ms 99.9th.

    当你执行完kafka-producer-perf-test.sh 脚本时,会输出类似上面的一行,从上面一行我们可以得出一些消息
    1>.每秒平均向kafka写入了24.76 MB的数据
    2>.每次写入的平均延迟为340.58毫秒;
    3>.最大延迟为5637.00毫秒;
    4>.2143毫秒内占95%;
    5>.3059毫秒内占99%;
    6>.5402毫秒内占99.9%;

  8. 测试kafka消费吞吐量

     nohup kafka-consumer-perf-test.sh --broker-list 127.0.0.1:9092  --topic test --messages 1000000 --fetch-size 1048576 --threads 10  > test-consumer.log &
    

    —threads 指线程数
    其余查看内容与上面内容相似

  9. 部分指令介绍

    bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list
    查看节点下有哪些主题
    ./bin/kafka-topics.sh --describe --bootstrap-server 127.0.0.1:9092 --topic name
    查看单主题具体信息
    ./bin/kafka-topics.sh --create --bootstrap-server 127.0.0.1:9092 --topic goods --partitions 4 --replication-factor 1
    创建主题
    ./bin/kafka-topics.sh --delete --bootstrap-server 127.0.0.1:9092 --topic foo
    删除主题 ./bin/kafka-topics.sh --alter --zookeeper 127.0.0.1:2181 --partitions 2 --topic goods
    修改主题 用于增加分区的 分区只能增加不能减少 bin/kafka-run-class.sh
    kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic test --time -1
    –time-1 表示要获取指定topic所有分区当前的最大位移,–time-2 表示获取当前最早位移。 两个命令的输出结果相减便可得到所有分区当前的消息总数。 分区当前的消息总数 = [–time-1] - [–time-2]
    相减是因为随着 kafka 的运行,topic 中有的消息可能会被删除,,因此 --time-1
    的结果其实表示的是历史上该topic生产的最大消息数,如果用户要统计当前的消息总数就必须减去

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值