我的大数据学习之路-初识Kafka
年初我加入了大数据团队,对大数据一无所知的我,为了尽快融入大家,只能硬着头皮学起来,下面是我学的kafka入门知识,先总结下来,慢慢积累吧。
Kafka基本原理:
kafka是一个分布式的分区的多副本的消息发布订阅系统,它具有消息持久,高吞吐,分布式,多客户端支持,实时等特性,适用于离线和在线的消息消费,如常规的消息收集,网站活跃性跟踪,聚合统计系统运营数据,日志收集等大量数据的互联网的数据收集场景。
kafka结构
Kafka 内部消息传递流程:
消费者使用一个消费者组名称(Consumer Group)来标记自己,主题的每个消息被传递给每个订阅消费者组中的一个消费者。如果所有的消费者实例都属于同样的消费组,它们就像传统队列负载均衡方式工作,如上图,Consumer_Greoup_B中的C1和C2之间为负载均衡方式;ConsumerC_Group_C中的C1,C2,C3为负载均衡方式,如果消费者实例都不属于一个消费组,如上图中Consumer_GroupA中的C1和Consumer_GroupB中的C1之间,则消息会被广播给所有的消费者。
操作步骤:
使用kafka-acls.sh进行用户授权命令:
查看某topic权限控制:./kafka-acls.sh —authorizer-properties zookeeper.connect=<(zookeeper集群业务IP:端口号)/kafka> --list --topic <topic name>
添加某用户producer权限:./kafka-acls.sh —authorizer-properties zookeeper.connect=<(zookeeper集群业务IP:端口号)/kafka> —add —allow-principal User:<用户名> —producer —topic <topic name>
删除某用户producer权限:./kafka-acls.sh —authorizer-properties zookeeper.connect=<(zookeeper集群业务IP:端口号)/kafka> —remove —allow-principal User:<用户名> —producer —topic <topic name>
使用kafka客户端命令:
kafka消息读取:./kafka-console-consumer.sh —bootstrap-server 187.7.61.100:端口号 —topic <topic name> —consumer.config=config/consumer.properties
kafka消息发布:./kafka-console-producer.sh —broker-list 187.7.61.100:端口号 —topic <topic name> —producer.config=config/producer.properties
管理kafka主题命令:
创建主题:./kafka-topic.sh —create —topic <topic name> —partitions <主题占用的分区数> —replication-factor <主题的备份数> —zookeeper zookeeper集群业务IP:端口号/kafka
list主题:./kafka-topic.sh —list —zookeeper zookeeper集群业务IP:端口号/kafka
删除主题:./kafka-topic.sh —delete —topic <topic name> —zookeeper zookeeper集群业务IP:端口号/kafka
topic限流:
producer限流:bin/kafka-configs.sh --zookeeper X.X.X.X :port/kafka --alter --add-cnfig 'producer_byte_rate=1048576' --entity-type topics --entity-name topicname
consumer限流:bin/kafka-configs.sh --zookeeper X.X.X.X :port/kafka --alter --add-cnfig 'consumer_byte_rate=1048576' --entity-type topics --entity-name topicname
user+topic 限流:
producer限流:bin/kafka-configs.sh --zookeeper X.X.X.X :port/kafka --alter --add-cnfig 'producer_byte_rate=1048576' --entity-type topics --entity-name topicname --entity-type users --entity-name username
consumer限流:bin/kafka-configs.sh --zookeeper X.X.X.X :port/kafka --alter --add-cnfig 'consumer_byte_rate=1048576' --entity-type topics --entity-name topicname --entity-type users --entity-name username