vm搭建kafka集群 [记录]

学习记录文档,若有错误多谢指出。

kafka.apache.org

kafka 是一个由scala和java开发的流处理平台,是一种高吞吐量的分布式发布订阅消息系统。

scala2.11-kafka0.11.0.0(0.9及以后消息偏移量存储位置与isr缓存队列的塞选策略有所变更。


安装

解压

tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module

创建文件夹

mkdir /opt/module/kafka_2.11-0.11.0.0/logs

// mkdir /opt/module/kafka_2.11-0.11.0.0/data

配置文件

…/config/server.properties

broker.id=2 ## 唯一的服务器id
delete.topic.enable=true ## 主题是否可删除(topic)
log.dirs=/opt/module/kafka_2.11-0.11.0.0/logs ## kafka暂存 "数据"的目录,日志也默认的放到了这个目录

listeners=PLAINTEXT://:9092 ## 服务端口号(使用默认)

num.network.threads=3 ## 网络线程数(使用默认)

num.io.threads=8 ## io线程数(使用默认)

–## .log数据文件"非日志文件"的保存的时间单位小时(使用默认)

log.retention.hours=168

zookeeper.connect=centos7x8664-2:2181,centos7x8664-3:2181,centos7x8664-4:2181 ## zookeeper集群

kafka目录结构

/opt/module/kafka_2.11-0.11.0.0/bin

服务相关

zookeeper-server-start.sh

zookeeper-server-stop.sh

控制台的生产者消费者(用做测试)

kafka-console-consumer.sh

kafka-console-producer.sh

主题操作 增/删/改/查

kafka-topics.sh

集群的压力测试

kafka-producer-perf-test.sh ## 生产者

kafka-consumer-perf-test.sh ## 消费者

分发到其它服务器

3 ~ 4
scp -r /opt/module/kafka_2.11-0.11.0.0 root@centos7x8664-3:/opt/module
scp -r /opt/module/kafka_2.11-0.11.0.0 root@centos7x8664-4:/opt/module

设置kafka的broker.id(唯一)

vim /opt/module/kafka_2.11-0.11.0.0/config/server.properties

启动

kafka

kafka是单节点启动的且默认是阻塞进程

sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-server-start.sh

以守护进程模式启动

sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-server-start.sh \
-daemon \
/opt/module/kafka_2.11-0.11.0.0/config/server.properties

使用群启脚本启动

编写群启脚本

#!/bin/bash

case $1 in

"start"){
    
    for i in centos7x8664-2 centos7x8664-3 centos7x8664-4
    do

        echo ">>>>>>>>>>>>>>>>>>>> start $i <<<<<<<<<<<<<<<<<<<<"
        ssh $i "sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-server-start.sh -daemon /opt/module/kafka_2.11-0.11.0.0/config/server.properties"

    done

};;

"stop"){
    
    for i in centos7x8664-2 centos7x8664-3 centos7x8664-4
    do

        echo ">>>>>>>>>>>>>>>>>>>> stop $i <<<<<<<<<<<<<<<<<<<<"
        ssh $i "sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-server-stop.sh"

    done

};;

esac

赋予启动权限

chmod +x /root/utils/kafka.sh

启动

sh /root/utils/kafka.sh start

查看kafka日志输出

tail -f /opt/module/kafka_2.11-0.11.0.0/logs/kafkaServer.out 

终止kafka进程

sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-server-stop.sh

使用

命令

topic

列出

列出当前broke(kafka)的所有主topic(主题)

sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-topics.sh --list --zookeeper <zookeeper-server-host:prot>
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-topics.sh --list --zookeeper centos7x8664-2:2181
详细信息
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-topics.sh --describe --topic <topic-name> --zookeeper <zookeeper-server-host:prot>
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-topics.sh --describe --topic first-topic --zookeeper centos7x8664-2:2181
创建
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-topics.sh --create --zookeeper <<zookzookeeperer-server-host:prot> --topic <zooker-server-host:prot> --partitions <partition-number> --replication-factor <replication-number>
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-topics.sh --create --zookeeper centos7x8664-2:2181 --topic first-topic --partitions 2 --replication-factor 2
删除
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-topics.sh --delete --zookeeper <zookzookeeperer-server-host:prot> --topic <topic-name>
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-topics.sh --delete --zookeeper centos7x8664-2:2181 --topic first-topic

producer(生产者)

开启一个生产者
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-producer.sh --topic <topic-name> --broker-list <kafka-server-host:port>
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-producer.sh --topic first-topic --broker-list centos7x8664-2:9092

consumer(消费者)

开启一个消费者(过时的)

直接链接zookeeper集群。但会出现警告因为0.9版本以后kafka队列数据的某些数据不会再存到zookeeper。

非从头开始

从最大的开始,非从头消费则只会收到最新的消息,kafka缓存的过往数据无法拉取

sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-consumer.sh --topic <topic-name> --zookeeper <zookzookeeperer-server-host:prot>
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-consumer.sh --topic first-topic --zookeeper centos7x8664-2:2181
从头消费

非顺序,但队列是按顺序的

sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-consumer.sh --topic <topic-name> --zookeeper <zookzookeeperer-server-host:prot> --from-beginning
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-consumer.sh --topic first-topic --zookeeper centos7x8664-2:2181 --from-beginning
开启一个消费者

0.9x 新的使用kafka集群

区别:当以这种方式创建消费者时会在kafka集群里的 log.dirs ( …/logs ) 文件夹"轮训的"均衡的创建50个__consumer-offsets 每个节点存放__consumer-offsets的数量为 [服务器数量 / 50],因为新版本0.9x以后的kafka会将数据存在本地(这里的本地指的是kafka而不是本地磁盘),这里的__consumer-offsets属于是系统topic的分区,这些分区用做"为消费者存储消费到的位置(偏移量)",且用作kafka集群的负载均衡。

非从头开始
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-consumer.sh --topic <topic-name> --bootstrap-server <kafka-server-host:port>
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-consumer.sh --topic first-topic --bootstrap-server centos7x8664-2:9092 
从头开始
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-consumer.sh --topic <topic-name> --bootstrap-server <kafka-server-host:port> --from-beginning
sh /opt/module/kafka_2.11-0.11.0.0/bin/kafka-console-consumer.sh --topic first-topic --bootstrap-server centos7x8664-2:9092 --from-beginning


遇到的问题

cat /opt/module/kafka_2.11-0.11.0.0/logs/kafkaServer.out
“nohup: 无法运行命令"java”: 没有那个文件或目录"

确认一下ssh默认登陆到了哪个用户(root),在用户目录下/root/.bashrc 里添加一个java可执行程序的绝对路径即可!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值