Kafka-2 集群安装配置与使用

1、安装配置

依赖于zookeeper

若之前安装过必须把zookeeper中的信息清除干净,以及日志的存储位置目录删除,集群中也必须删除。

zookeeper中删除:

brokers,cluster,contoller_epoch, isr_change_notification,consumers,latest_producer_id_block,config等

1.1 解压:

Kafka2.11-2.41: 2.11为scala版本号,2.41才是它的主版本

1.2 配置:

  • 修改安装目录下配置文件:server.properties (红色是需要改的,其它部分可根据实际业务调整)

# 集群中的ID

broker.id = 0

# kafka绑定的本机的主机名

listeners=PLAINTEXT://c01:9092

# 配置外网访问

advertised.listener=PLAINTEXT://公网IP:9092

# 数据存储目录

log.dirs=/opt/data/kafka-logs

# 消息一万条刷一次

log.flush.interval.messages =10000

# 消息1000毫秒刷新一次, 即1秒刷一次

 log.flush.interval.ms = 1000

# 消息的保留时间:168hour , 即7天

log.retention.hours(|minutes|ms) =  168

# 日志保留大小, -1即不使用

log.retention.bytes = -1

# 多久检查一次日志保留(默认15分钟)

log.retention.check.interval.ms = 300000

# zk的地址

zookeeper.connect = c01:2181, c02:2181, c03:2181

# rebalance等待延迟, 改为3秒

group.initial.rebalance.delay.ms = 3000

具体可参照官网的配置进行调整

  • 分发到每一个分机,并修改每个分机的id,主机名

# 集群中的ID

broker.id = 0

# kafka绑定的本机的主机名

listeners=PLAINTEXT://c01:9092

  • 配置环境变量到profile下
  • 启动:

bin/kafka-server-start.sh  config/server.properties

jps 会有kafka

netstat -nltp | grep 9092 会可以看到进程

  • 集群一键启动脚本:

也可以直接写一个批量集群启动脚本:vim bin/kafka-all.sh

#!/bin/bash
if [ $# -eq 0 ]
then
echo "please input param: start stop"
else
if [ $1 = start ]
then
for i in {1..3}
do
echo "${1}ing c0${i}"
ssh c0${i} "source /etc/profile;/root/apps/kafka_2.11-2.0.0/bin/kafka-server-start.sh -daemon /root/apps/kafka_2.11-2.0.0/config/server.properties"
done
fi
if [ $1 = stop ]
then
for i in {1..3}
do
ssh c0${i} "source /etc/profile;/root/apps/kafka_2.11-2.0.0/bin/kafka-server-stop.sh"
done
fi
fi

一键启动:kafka-all.sh start

 

2、命令行测试操作(非正式用)

所有的操作脚本:

类似hbase,kafka也有详细的操作说明,可以参照提示进行操作即可

2.1 topic操作

  • 创建topic

./kafka-topics.sh --zookeeper c01:2181,c02:2181,c03:2181 --create --replication-factor 3 --partitions 3 --topic test

参数解释:

--replication-factor  副本数量

--partitions 分区数量

--topic topic名称

  • 查看当前系统中的所有topic

bin/kafka-topics.sh --zookeeper c01:2181,c02:2181,c03:2181 --list

  • 删除topic

删除topic需要当前的topic参数处于启用状态:

delete.topic.enable=true 

bin/kafka-topics.sh --zookeeper c01:2181,c02:2181,dc03:2181 --delete --topic test

  • 查看某个topic的详情

bin/kafka-topics.sh --zookeper c01:2181,c02:2181,c03:2181 --describe --topic test 

 

Isr: in sync replicas  同步副本

Osr: out of sync replicas 失去同步的副本(数据与leader之间的差距超过配置的阈值)

  • 修改分区数(分区只可增不可减)

减少分区涉及数据的转移、日志段的拼接合并

bin/kafka-topics.sh --zookeeper c01:2181 --alter --topic test --partitions 5 

  • 手动指定副本的存储位置

bin/kafka-topic.sh --create

  • topic的动态参数更新:动态添加与修改

# 修改test的压缩类型

bin/kafka-configs.sh --zookeeper c01:2181 --entity-type topics --entity-name test --alter -add-config compression.type=gzip

2.2 命令行producer

# 往kafka中写数据

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

>hello word

>kafka

>nihao

 

2.3 命令行Consumer

  • 消费消息

bin/kafka-console-consumer.sh --bootstrap-servers  c01:9092  --from-beginning --topic test

  • # 指定要消费的分区,和要消费的起始offset

bin/kafka-console-consumer.sh --bootstrap-servers c01:9092,c02:9092,c03:9092 --topic doit14 --offset 2 --partition 0

3、生产者api操作

3.1 生产者客户端

  • 配置生产者客户端参数及创建相应的生产者实例

  • 构建待发送的消息

  • 发送消息

  • 关闭生产者实例

加入依赖:maven:   kafka-clients   2.0.0

bootstrap.servers就是brokers

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;

import java.util.Properties;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pub.ryan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值