前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在CDH中为Kafka设置流量配额

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

作者头像
Fayson
发布2018-07-13 10:20:09
2.8K0
发布2018-07-13 10:20:09
举报
文章被收录于专栏:Hadoop实操Hadoop实操

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

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性能测试脚本,一个生产消息、一个消费消息两个脚本,下载地址如下:

代码语言:javascript
复制
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目录下

代码语言:javascript
复制
[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,命令如下:

代码语言:javascript
复制
kafka-topics --create --zookeeper cdh01.fayson.com:2181 --replication-factor 3 --partitions 3 --topic test_quota

(可左右滑动)

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

代码语言:javascript
复制
[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;
};

(可左右滑动)

代码语言:javascript
复制
[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的流量,脚本如下:

代码语言:javascript
复制
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的流量,脚本如下:

代码语言:javascript
复制
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实操

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档