温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
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
(可左右滑动)
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
(可左右滑动)
3.使用Kafka命令创建一个测试的Topic,命令如下:
kafka-topics --create --zookeeper cdh01.fayson.com:2181 --replication-factor 3 --partitions 3 --topic test_quota
(可左右滑动)
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;
};
(可左右滑动)
[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]#
(可左右滑动)
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
(可左右滑动)
向test_quota发送100000条消息,每条消息约100K,平均159.76MB/sec的流量,接下来对Kafka的Producer进行流量限额,进行测试
2.登录Cloudera Manager进入Kafka服务的配置页面搜索“quota”,设置Producer的流量为10MB/sec
保存配置后,根据CM提示重启Kafka服务。
3.修改Producer流量为10MB/sec,再次进行测试
再次使用Producer性能测试脚本,向test_quota发送100000条消息,每条消息大小100K
经过测试可以看到约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
(可左右滑动)
从test_quota消费100000条消息,每次获取10000条,经过测试Kafka Consumer的流量为190.83MB/sec。
2.登录Cloudera Manager进入Kafka服务的配置页面搜索“quota”,设置Consumer的流量为10MB/sec
3.修改Consumer流量为10MB/sec,再次进行测试
再次使用Consumer性能测试脚本,从test_quota获取100000条消息,每条消息大小100K
经过测试可以看到Kafka Consumer的消费流量维持在30MB/sec左右,相较于未限制之前流量有了大幅的下降,同样与Producer的配额限制一样是针对Broker的。
5.总结
1.关于Kafka quota与user和client id的关系,Fayson会在接下来的文章再次进行分析。
2.quota是一个被定义到每台broker粒度的概念。每个client在达到限速前可以与单台broker产生最大为X bytes/sec的写/读流量请求。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操