0
点赞
收藏
分享

微信扫一扫

如何在CDH中为Kafka设置流量配额

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​​https://github.com/fayson/cdhproject​​


提示:代码块部分可以左右滑动查看噢


1.文档编写目的



从0.9版本开始,Kafka集群新增了针对生产和消费请求进行配额(quotas)控制。本篇文章Fayson主要介绍如何在CDH中为Kafka设置流量配额。


  • 文档概述

1.环境准备

2.Producer和Consumer流量配额测试

3.总结


  • 测试环境

1.CM和CDH版本为5.14.3

2.Redhat7.4

3.Kafka0.10.2(CDK2.2.0)


  • 前置条件

1.集群已启用Kerberos


2.环境准备



在CDH集群中默认不存在Kafka的性能测试脚本,这里需要将GitHub上的两个Kafka性能测试脚本部署到Kafka集群,用于设置Kafka流量配额后进行测试。


1.下载Kafka性能测试脚本,一个生产消息、一个消费消息两个脚本,下载地址如下:


https://github.com/apache/kafka/blob/0.10.2/bin/kafka-consumer-perf-test.sh
https://github.com/apache/kafka/blob/0.10.2/bin/kafka-producer-perf-test.sh

(可左右滑动)


如何在CDH中为Kafka设置流量配额_性能测试


如何在CDH中为Kafka设置流量配额_cloudera_02


2.将上面两个脚本部署在/opt/cloudera/parcels/KAFKA/bin目录下


[root@cdh01 bin]# chmod +x kafka-consumer-perf-test.sh 
[root@cdh01 bin]# chmod +x kafka-producer-perf-test.sh
[root@cdh01 bin]# ll

(可左右滑动)


如何在CDH中为Kafka设置流量配额_kafka_03


3.使用Kafka命令创建一个测试的Topic,命令如下:


kafka-topics --create --zookeeper cdh01.fayson.com:2181 --replication-factor 3 --partitions 3 --topic test_quota

(可左右滑动)


如何在CDH中为Kafka设置流量配额_kafka_04


4.访问Kerberos环境的Kafka,需要的jaas.conf和client.properties配置文件内容如下:


[root@cdh03 disk1]# more jaas.conf 
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true;
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true;
};

(可左右滑动)


如何在CDH中为Kafka设置流量配额_cloudera_05


[root@cdh03 disk1]# more client.properties 
security.protocol=SASL_PLAINTEXT
sasl.kerberos.service.name=kafka
group.id=testgroup
bootstrap.servers=cdh02.fayson.com:9092,cdh03.fayson.com:9092,cdh04.fayson.com:9092
max.request.size=4192256
[root@cdh03 disk1]#

(可左右滑动)


如何在CDH中为Kafka设置流量配额_cloudera_06


3.Kafka Producer流量配额测试



1.默认情况是未设置Kafka Producer的流量额度,不设置的情况下进行测试

使用准备好的性能测试脚本,向test_quota中生产消息,测试Kafka Producer的流量,脚本如下:


kinit fayson
export KAFKA_OPTS="-Djava.security.auth.login.config=/data/disk1/jaas.conf"
sh /opt/cloudera/parcels/KAFKA/bin/kafka-producer-perf-test.sh \
--topic test_quota \
--num-records 100000 \
--producer.config /data/disk1/client.properties \
--throughput 10000 \
--record-size 102400

(可左右滑动)


如何在CDH中为Kafka设置流量配额_kafka_07


向test_quota发送100000条消息,每条消息约100K,平均159.76MB/sec的流量,接下来对Kafka的Producer进行流量限额,进行测试


2.登录Cloudera Manager进入Kafka服务的配置页面搜索“quota”,设置Producer的流量为10MB/sec


如何在CDH中为Kafka设置流量配额_kafka_08


保存配置后,根据CM提示重启Kafka服务。


3.修改Producer流量为10MB/sec,再次进行测试

再次使用Producer性能测试脚本,向test_quota发送100000条消息,每条消息大小100K


如何在CDH中为Kafka设置流量配额_性能测试_09


经过测试可以看到约30.41MB/sec的流量向test_quota发送消息,由于Kafka的流量限制是针对Broker的,这里Fayson的Kafka集群有3个Broker,因此流量稳定在30MB/sec的速度。


4.Kafka Consumer流量配额测试



1.默认情况是未设置Kafka Consumer的流量额度,不设置的情况下进行测试

使用准备好的性能测试脚本,向test_quota中生产消息,测试Kafka Producer的流量,脚本如下:


kinit fayson
export KAFKA_OPTS="-Djava.security.auth.login.config=/data/disk1/jaas.conf"
sh /opt/cloudera/parcels/KAFKA/bin/kafka-consumer-perf-test.sh \
--topic test_quota \
--messages 100000 \
--fetch-size 10000 \
--broker-list cdh02.fayson.com:9092,cdh03.fayson.com:9092,cdh04.fayson.com:9092 \
--consumer.config /data/disk1/client.properties

(可左右滑动)


如何在CDH中为Kafka设置流量配额_kafka_10


从test_quota消费100000条消息,每次获取10000条,经过测试Kafka Consumer的流量为190.83MB/sec。


2.登录Cloudera Manager进入Kafka服务的配置页面搜索“quota”,设置Consumer的流量为10MB/sec


如何在CDH中为Kafka设置流量配额_性能测试_11


3.修改Consumer流量为10MB/sec,再次进行测试

再次使用Consumer性能测试脚本,从test_quota获取100000条消息,每条消息大小100K


如何在CDH中为Kafka设置流量配额_cloudera_12


经过测试可以看到Kafka Consumer的消费流量维持在30MB/sec左右,相较于未限制之前流量有了大幅的下降,同样与Producer的配额限制一样是针对Broker的。


5.总结



1.关于Kafka quota与user和client id的关系,Fayson会在接下来的文章再次进行分析。


2.quota是一个被定义到每台broker粒度的概念。每个client在达到限速前可以与单台broker产生最大为X bytes/sec的写/读流量请求。



提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。



推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

如何在CDH中为Kafka设置流量配额_cloudera_13

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操


举报

相关推荐

0 条评论