点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
- Hadoop(已更完)
- HDFS(已更完)
- MapReduce(已更完)
- Hive(已更完)
- Flume(已更完)
- Sqoop(已更完)
- Zookeeper(已更完)
- HBase(已更完)
- Redis (已更完)
- Kafka(正在更新…)
章节内容
上节我们完成了如下的内容,基本都是特性概念相关的:
- Kafka 主题与分区
- Kafka 自定义反序列化
- Kafka 拦截器
- Kafka 位移提交
- Kafka 位移管理
- Kafka 重平衡
kafka-topics
相关参数
创建主题
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --create --topic topic_test_1 --partitions 1 --replication-factor 1
查看主题
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --list
kafak-topics.sh --zookeeper h121.wzk.icu:2181 --describe --topic topic_test_1
修改主题
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --create --topic topic_test_1 --partitions 2 --replication-factor 1
删除主题
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --delete --topic topic_test_1
增加分区
通过命令行工具操作,只能够增加,不能够减少。
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --create --topic topic_test_1 --partitions 1 --replication-factor 1
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --alter --topic topic_test_2 --partions 2
分区副本
副本分配的三个目标:
- 均衡的将副本分散到各个Broker上
- 对于某个Broker上分配的分区,它的其他副本在其他Broker上
- 如果所有的Broker都有机架信息,尽量将分区的各个副本分配到不同机架上的Broker
在不考虑机架信息的情况下:
- 第一个副本分区通过轮询的方式挑选一个Broker,进行分配。该轮询从Broker列表的随机位置进行轮询。
- 其余副本通过增加偏移量进行分配
必要参数
KafkaAdminClient
除了使用Kafka的Bin目录下的脚本来管理Kafka,还可以使用管理Kafka的API将某些管理查看的功能集成到系统中。
在Kafka 0.11 版本之前,可以通过kafka-core包(Kafka服务端,Scala)中的AdminClient和AdminUtils来实现部分集群管理操作。
在Kafka 0.11之后,多了一个AdminClient,在kakfa-client包下,一个抽象类:KafkaAdminClient。
基本介绍
基本功能包含如下:
- 创建主题:createTopics
- 删除主题:deleteTopics
- 列出所有主题:listTopics
- 查询主题:describeTopics
- 查询集群:describeCluster
- 查询配置:describeConfigs
- 修改配置:alterConfigs
- 修改副本的日志目录:alterReplicaLogDirs
- 查询节点的日志目录信息:describeLogDirs
- 查询副本的日志目录信息:describedReplicaLogDirs
- 增加分区:createPartitions
操作步骤
- 客户端根据方法的调用,创建出相应的协议请求,比如创建:Topic的createTopics方法,其内部就是发送CreateTopicRequest请求。
- 客户端发送请求到KafkaBroker
- KafkaBroker处理相应的请求并回执,CreateTopicResponse,客户端接受并解析处理。
如果要自己实现一个功能,需要:
- 自定义XXOptions
- 自定义XXResult返回值
- 自定义Call,挑选合适的XXRequest和XXResponse
偏移量管理
在Kafka 1.0.2版本,在 __consumer_offsets 主题中保存各个消费组的偏移量。
早期是子啊ZooKeeper中管理消费偏移量。
脚本参数
脚本名称为:bin/kafka-consumer-groups.sh
查看GroupID消费
查看当前有哪些GroupID正在进行消费,这里没有指定Topic,查看的是所有Topic消费的GroupId的列表。
kafka-consumer-groups.sh --bootstrap-server h121.wzk.icu:9092 --list
查看指定ID消费
kafka-consumer-groups.sh --bootstrap-server h121.wzk.icu:9092 --describe --group group
设置偏移量为最早
kafka-consumer-groups.sh --bootstrap-server h121.wzk.icu:9092 --reset-offsets --group group --to-earliest --topic test_demo
设置偏移量为最新
kafka-consumer-groups.sh --bootstrap-server h121.wzk.icu:9092 --reset-offsets --group group --to-latest --topic test_demo