Kafka-offset查看与变更
一、环境介绍
主机名 | IP | Mysql角色 | kerberbos |
dcdl-test-namenode1 | 10.2.98.128 | Kafka Broker Default Group | 非kdc认证 |
dcdl-test-datanode1 | 10.2.96.129 | Kafka Broker Default Group | kdc认证 |
dcdl-test-datanode2 | 10.2.96.130 | Kafka Broker Group 1 | kdc认证 |
dcdl-test-datanode3 | 10.2.96.131 | Kafka Broker Default Group | kdc认证 |
二、在非kerberbos认证下kafka offset变更
1、创建测试kafka topic
kafka-topics --create --zookeeper dcdl-test-datanode1.essence.com:2181 --replication-factor 1 --partitions 1 --topic test2 |
2、查看创建kafka topic
kafka-topics --zookeeper 10.2.98.128:2181 --list |
|
3、向kafka topic 写入数据
kafka-console-producer --broker-list 10.2.98.128:9092 --topic test2 |
|
4、消费kafka topic 数据信息
kafka-console-consumer --bootstrap-server 10.2.98.128:9092 --group offset-group --topic test2 |
|
5、查看消费者消费偏移量
kafka-consumer-groups --bootstrap-server 10.2.98.128:9092 --group offset-group --describe |
Current-offset与log-end-offset 相等表示kafka topic 消息已全部消费完毕 |
6、设置kafka topic offset为最初偏移量
kafka-consumer-groups --bootstrap-server 10.2.98.128:9092 --group offset-group --topic test2 --reset-offsets --to-earliest --execute |
注意:Offset-group必须是非活跃状态,退出消费。 |
查看topic test2的offset 与第5步骤对比已回到最初的偏移量 |
7、设置kafka topic offset任意偏移量
kafka-consumer-groups --bootstrap-server 10.2.98.128:9092 --group offset-group --topic test2 --reset-offsets --to-offset 8 --execute |
|
查看topic test2的offset与第7步骤对比current-offset向前偏移8 |
三、Kafka在kerberbos认证下查看与修改topic offset
1、以kafka用户为测试背景,导入kafka用户变量
配置kafka用户 kerberbos认证相关文件
修改client.properties文件
export KAFKA_OPTS="-Djava.security.auth.login.config=/home/kafka/jaas-keytab.conf" |
2、创建kafka topic
kafka-topics --create --zookeeper 10.2.98.129:2181/kafka2 --replication-factor 1 --partitions 1 --topic offsettest |
3、向kafka topice offsettest写入数据
kafka-console-producer --broker-list 10.2.98.129:9092,10.2.98.130:9092,10.2.98.131:9092 --topic offsettest --producer.config /home/kafka/client.properties |
4、消费kafka topic offsettest消息
kafka-console-consumer --bootstrap-server 10.2.98.129:9092,10.2.98.130:9092,10.2.98.131:9092 --group offset-group --topic offsettest --consumer.config /home/kafka/client.properties |
5、查看kafka topic offsettest的消费者消费偏移量
kafka-consumer-groups --bootstrap-server 10.2.98.129:9092,10.2.98.130:9092,10.2.98.131:9092 --group offset-group --describe --command-config /home/kafka/client.properties |
提示:current-offset与log-end-offset相等,及lag等于0,表示topic 已全部消费 |
6、设置kafka topic offsettest 最初偏移量
kafka-consumer-groups --bootstrap-server 10.2.98.129:9092,10.2.98.130:9092,10.2.98.131:9092 --group offset-group --topic offsettest --reset-offsets --to-earliest --execute --command-config /home/kafka/client.properties |
注意:Offset-group必须是非活跃状态,退出消费。 |
提示:查看topic offsettest的current-offset更改0, LAG变更为19,与第5步相比已回至最初偏移量 |
7、设置kafka topic偏移量任意值
kafka-consumer-groups --bootstrap-server 10.2.98.129:9092,10.2.98.130:9092,10.2.98.131:9092 --group offset-group --topic offsettest --reset-offsets --to-offset 8 --execute --command-config /home/kafka/client.properties |
提示:查看topic offsettest的CURRENT-OFFSET变更为8,与第6步骤相比LAG已减少8变更为11. |
四、普通用户查看,修改offset所需最小权限
1、以用户kafka_test,topic: offsettest; 消费者组:testgroup 测试背景
2、kerberos认证用户,导入kafka_test 变量
$ kinit -kt /**/**/kafka_test.keytab $ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/kafka_test/jaas-keytab.conf" $ vi client.properties
|
3、在管理用户kafka下授于用户kafka_test Topic读/写权限
kafka-sentry -gpr -r risk_role -p "Topic=offsettest->action=read" kafka-sentry -gpr -r risk_role -p "Topic=offsettest->action=read" kafka-sentry -arg -r risk_role -g kafka_test |
4、向topic offsettest写入数据
kafka-console-producer --broker-list dcdl-test-datanode2.essence.com:9092,dcdl-test-datanode1.essence.com:9092,dcdl-test-datanode3.essence.com:9092 --topic offsettest --producer.config client.properties |
|
提示:没有权限写入数据 |
5、在kafka_test用户下消费topic offsettest数据
kafka-console-consumer --bootstrap-server dcdl-test-datanode2.essence.com:9092,dcdl-test-datanode1.essence.com:9092,dcdl-test-datanode3.essence.com:9092 --group testgroup --topic offsettest --consumer.config client.properties |
提示:没有权限读取topic数据 |
6、在管理用户kafka下授于普通用户kafka_test topic offsettest的describe权限
kafka-sentry -gpr -r risk_role -p "Topic=offsettest->action=describe" kafka-sentry -arg -r risk_role -g kafka_test |
7、在kafka_test用户下topic offsettest再次生产,消费数据
kafka-console-producer --broker-list dcdl-test-datanode2.essence.com:9092,dcdl-test-datanode1.essence.com:9092,dcdl-test-datanode3.essence.com:9092 --topic offsettest --producer.config client.properties |
提示:授于topic的describe权限后,已可以生产数据 |
kafka-console-consumer --bootstrap-server dcdl-test-datanode2.essence.com:9092,dcdl-test-datanode1.essence.com:9092,dcdl-test-datanode3.essence.com:9092 --group testgroup --topic offsettest --consumer.config client.properties |
提示:授于topic的describe权限后,已可以消费数据 |
8、在topic offsettest有read,write,describe权限,查看topic offset
kafka-consumer-groups --bootstrap-server dcdl-test-datanode2.essence.com:9092,dcdl-test-datanode1.essence.com:9092,dcdl-test-datanode3.essence.com:9092 --group testgroup --describe --command-config client.properties |
提示:此步说明无需授权消费者组testgroup,可查看offset |
9、授权消费者组testgroup write,describe权限
kafka-sentry -gpr -r risk_role -p "CONSUMERGROUP=testgroup->action=write" kafka-sentry -gpr -r risk_role -p "CONSUMERGROUP=testgroup->action=describe" kafka-sentry -arg -r risk_role -g kafka_test |
10、修改topic offsettest的最初偏移量
kafka-consumer-groups --bootstrap-server dcdl-test-datanode2.essence.com:9092,dcdl-test-datanode1.essence.com:9092,dcdl-test-datanode3.essence.com:9092 --group testgroup --topic offsettest --reset-offsets --to-earliest --execute --command-config client.properties |
11、提示:消费者组testgroup是从offset 23起始消费,修改最初偏移量到23.
|
12、由以上步骤得出普通用户访问kerberos 认证kafka topic以及修改offset的权限如下
(1) 在给Topic赋权read或者write权限时,务必同时带上describe权限,否则权限不生效。当然你也可以将权限设置为ALL.
(2) 在kafka 消费者组授权write权限时,也务必同时带上decribe权限,否则权限不生效。
(3) 修改kafka offset时,消费者组必须是无成员状态下,否则无法修改offset.