生产环境-数据仓库组件之Kafka(一)

数据仓库组件之Kafka(一)

1、调整参数

安装Kafka,进行service.properties参数的调整(3台都进行调整)

# 每个机器的唯一表示,这个作用类似于zookeeper中的myid文件和HDFS中的slaves文件
broker.id=0
# 配置kafka和zookeeper之间的连接端口和列表,因为kafka是依赖于zookeeper的
zookeeper.connect=cdh01:2181,cdh02:2181,cdh03:2181
# 指定Kafka持久化消息的目录,Kafka可以把负载均匀地分配到多个目录下
log.dirs=/mnt/disk1/kafka/data1/kafka-logs,/mnt/disk1/kafka/data2/kafka-logs,/mnt/disk1/kafka/data3/kafka-logs
# 新增,避免删除topic带来很多意想不到的问题
auto.create.topics.enable = false
delete.topic.enable=true
# kafka服务监听的端口号
port=9092
# 当前机器主机名
host.name=cdh01

2、启动、关闭kafka

启动命令:

进入Kafka安装目录执行:
./bin/kafka-server-start.sh -daemon ./config/server.properties

停止命令:

./bin/kafka-server-stop.sh -daemon ./config/server.properties

3、Kafka压力测试

用 Kafka官方自带的脚本,对 Kafka进行压测。Kafka压测时,可以查看到哪个地方出

现了瓶颈(CPU,内存,网络 IO)。一般都是网络 IO达到瓶颈。

kafka-consumer-perf-test.sh

kafka-producer-perf-test.sh

1)KafkaProducer压力测试

(1)在 Kafka安装目录/bin/ 下面有这两个文件。我们来测试一下

bin/kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput 1000 --producer-props bootstrap.servers=cdh01:9092,cdh02:9092,cdh03:9092

说明:

record-size ===> 是一条信息有多大,单位是字节。

num-records ===> 是总共发送多少条 信息。

throughput ===> 是每秒多少条信息,设成-1,表示不限流,可测出生产者最大吞吐量。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aNOFa89k-1620973812090)(/Users/zll/Library/Application Support/typora-user-images/image-20201228194606318.png)]

参数解析:本例中一共写入 10w条消息,每秒向 Kafka写入了 0.10MB的数据,平均

是 1000条消息/秒,每次写入的平均延迟为 0.33毫秒,最大的延迟为 336毫秒。

2)KafkaConsumer压力测试

Consumer的测试,如果这四个指标(IO,CPU,内存,网络)都不能改变,考虑增加

分区数来提升性能。

bin/kafka-consumer-perf-test.sh --broker-list cdh01:9092,cdh02:9092,cdh03:9092 --topic test --fetch-size 10000 --messages 10000000 --threads 1

参数说明:

–zookeeper ===> 指定 zookeeper的链接信息

–topic ===> 指定 topic的名称

–fetch-size ===> 指定每次 fetch的数据的大小

–messages ===> 总共要消费的消息个数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LS3fb1nA-1620973812092)(/Users/zll/Library/Application Support/typora-user-images/image-20201228201711952.png)]

参数解析:

开始测试时间 start.time: 2020-12-28 20:15:41:099,

测试结束数据 end.time: 2020-12-28 20:15:52:352,

共消费数据(MB) data.consumed.in.MB: 9.5367M,

吞吐量(MB/S) MB.sec: 0.8475,

共消费(条) data.consumed.in.nMsg: 100000,

平均每秒消费(条) nMsg.sec: 8886.5192,

再平衡时间(ms) rebalance.time.ms: 1609157741448,

fetch平均时间(ms) fetch.time.ms: -1609157730195,

fatch平均大小(MB/s) fetch.MB.sec: -0.0000,

fatch平均条数(条) fetch.nMsg.sec: -0.0001

4、操作topic

1)查看topic列表

bin/kafka-topics.sh --list --zookeeper cdh01:2181,cdh02:2181,cdh03:2181

2)创建topic

bin/kafka-topics.sh --create --zookeeper cdh01:2181,cdh02:2181,cdh03:2181 --replication-factor 1 --partitions 1 --topic test

3)查看topic信息

bin/kafka-topics.sh --describe --zookeeper cdh01:2181,cdh02:2181,cdh03:2181 --topic test

4)Kafka不停机修改某一个topic数据保存时间

bin/kafka-configs.sh --zookeeper cdh01:2181,cdh02:2181,cdh03:2181 --alter --entity-name test --entity-type topics --add-config retention.ms=60000

5)查看指定group下topic的堆积数量

bin/kafka-consumer-groups.sh --bootstrap-server cdh01:2181,cdh02:2181,cdh03:2181 --describe --group track-consumer-group

6)删除topic

bin/kafka-topics.sh --delete --zookeeper cdh01:2181,cdh02:2181,cdh03:2181 --topic test

彻底删除topic,在Kafka的service.properties中添加参数(已配置)

1)auto.create.topics.enable = false

默认设置为true。如果设置为true,则produce或者fetch 不存在的topic也会自动创建这个topic。这样会给删除topic带来很多意向不到的问题。

2)delete.topic.enable=true

如果没有设置 delete.topic.enable=true,则调用kafka 的delete命令无法真正将topic删除,而是显示(marked for deletion)
3)调用命令删除topic:

bin/kafka-topics.sh --delete --zookeeper cdh01:2181,cdh02:2181,cdh03:2181 --topic test

4)删除kafka存储目录(server.properties文件log.dirs配置,默认为"/data/kafka-logs")相关topic的数据目录。
注意:如果kafka 有多个 broker,且每个broker 配置了多个数据盘(我们配置地址为 /mnt/disk1/kafka/data1/kafka-logs,/mnt/disk1/kafka/data2/kafka-logs,/mnt/disk1/kafka/data3/kafka-logs),且topic也有多个分区和replica,则需要对所有broker的所有数据盘进行扫描,删除该topic的所有分区数据。

5)找一台部署了zk的服务器
登陆zookeeper客户端

bin/zkCli.sh -server cdh01:2181,cdh02:2181,cdh03:2181
rmr /brokers/topics/【topic name】

7)生产者

bin/kafka-console-producer.sh --broker-list cdh01:9092,cdh02:9092,cdh03:9092 --topic test1

8)消费者

bin/kafka-console-consumer.sh --bootstrap-server cdh01:9092,cdh02:9092,cdh03:9092 --topic test --from-beginning 

9)查看Kafka主题当前偏移量

./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list cdh01:9092,cdh02:9092,cdh03:9092 --topic test

6、Kafka-manager

1)调整application.conf文件

vim /conf/application.conf

修改kafka-manager.zkhosts列表为自己的zk节点
kafka-manager.zkhosts="cdh01:2181,cdh02:2181,cdh03:2181"

2)启动kakfa-manager

kafka-manager 默认的端口是9000,可通过 -Dhttp.port,指定端口; -Dconfig.file=conf/application.conf指定配置文件:

进入Kafka-manager的安装目录执行

bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=9080 -Dflume.root.logger=INFO,console &

3)UI页面配置

ip:9080

1)
在这里插入图片描述
2)
在这里插入图片描述
3)
在这里插入图片描述
4)
在这里插入图片描述
Kafka-manager的描述说明:
img

img

img
.
.
.
.
.
下面是我的公众号,收集了现在主流的大数据技能和架构,欢迎大家一起来学习交流。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值