如何在Kafka上创建topic?

手工脚本创建

./kafka-topics.sh –zookeeper 127.0.0.1:2181 –create –topic test.example –replication-factor 2 –partitions 12
  • -topic制定topic的name
  • –partitions指定分区数,这个参数要根据broker数和数据量决定,一般情况下每个Broker上两个分区最好
  • –replication-factor指定partition的replicas数,建议设置为2

自动创建

开启自动创建配置:auto.create.topics.enable=true ,使用程序直接往kafka中相应的topic发送数据,如果topic不存在就会按默认配置进行创建。

如何在Kafka上对一个Topic增加partition?

通过kafka-topics.sh工具的alter命令,将test.example的partitions从12增加到20

./kafka-topics.sh –zookeeper 127.0.0.1:2181 –alter –partitions 20 –topic test.example

如何在Kafka上对一个Topic增加replicas?

操作步骤日下:

  • 查看topic的详细信息
./kafka-topics.sh –zookeeper 127.0.0.1:2181 –describe –topic test.example
  • 修改配置文件

    创建json文件partitions-to-move.json ,修改内容如下:
{
“partitions”:
[
{
“topic”: “test.example”,
“partition”: 0,
“replicas”: [0,4]
}
,version”:1
}
  • 执行一下脚本
kafka-reassign-partitions.sh –zookeeper 127.0.0.1:2181 –reassignment-json-file partitions-to-move.json –execute
  • 检查修改情况
kafka-topics.sh –zookeeper 127.0.0.1:2181 –describe –topic test.example

如何在Kafka中对Topic的leader进行均衡?

在创建一个topic时,kafka尽量将partition均分在所有的brokers上,并且将replicas也j均分在不同的broker上。每个partitiion的所有replicas叫做"assigned replicas","assigned replicas"中的第一个replicas叫"preferred replica",刚创建的topic一般"preferred replica"是leader。leader replica负责所有的读写。但随着时间推移,broker可能会停机,会导致leader迁移,导致机群的负载不均衡。我们期望对topic的leader进行重新负载均衡,让partition选择"preferred replica"做为leader

  • 对所有topic进行操作
./kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181
  • 对特定的topic操作

编写json文件

{
"partitions":
[
{"topic":"test.example","partition": "0"}
]
}

执行一下脚本

./kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181 --path-to-json-file *.json

Kafka下线broker的操作

主动下线是指broker运行正常,因为机器需要运维(升级操作系统,添加磁盘等)而主动停止broker,分两种情况处理:

所有的topic的replica >= 2

此时,直接停止一个broker,会自动触发leader election操作,不过目前leader election是逐个partition进行,等待所有partition完成leader election耗时较长,这样不可服务的时间就比较长。为了缩短不可服务时间窗口,可以主动触发停止broker操作,这样可以逐个partition转移,直到所有partition完成转移,再停止broker。

./kafka-run-class.sh kafka.admin.ShutdownBroker --zookeeper 127.0.0.1:2181 --broker #brokerId# --num.retries 3 --retry.interval.ms 60

shutdown Broker

./kafka-server-stop.sh

存在topic的replica=1

当存在topic的副本数小于2,只能手工把当前broker上这些topic对应的partition转移到其他broker上。当此broker上剩余的topic的replica > 2时,参照上面的处理方法继续处理

最新文章

  1. ArcGIS Engine开发前基础知识(3)
  2. DB2 claim与drain
  3. selenium通过WebDriverWait实现ajax测试,实现等页面元素加载完成
  4. [转载]部署Office Web Apps Server并配置其与SharePoint 2013的集成
  5. javascript栈的建立样码
  6. 【IOS笔记】Delegation
  7. if-else的优化举例
  8. _cpluscplus
  9. RDD操作
  10. 使用john破解ubuntu(linux)9.10密码
  11. python赋值和拷贝----一切皆对象,参数皆引用
  12. GPU版的tensorflow在windows上的安装时的错误解决方案
  13. java开发代码中的50个性能优化细节
  14. php |= 什么意思
  15. Spring之BeanFactory和FactoryBean接口的区别
  16. Java之JavaWeb项目开发开始准备
  17. Selenium上机实验
  18. 搭建springboot环境
  19. Python实战(6)单线程和多线程导入mysql数据对比测试
  20. Hive基础之Hive体系架构&运行模式&Hive与关系型数据的区别

热门文章

  1. PetaPoco与MySQL
  2. Linux下timer延时的使用
  3. CentOS yum 源的配置与使用(引用)
  4. 《Linux多线程编程手册》读书笔记
  5. b2_trsd_EDSD_new
  6. 13) Developing Java Plugins
  7. (网络流 最大流 Dinic || SAP)Control -- hdu --4289
  8. 老码农冒死揭开行业黑幕:如何编写无法维护的代码[ZZ]
  9. hbase启动异常的慢
  10. asp.net—执行分页存储过程的函数