`
1028826685
  • 浏览: 936704 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

Kafka命令行常用命令说明(二)

 
阅读更多

参考官网site:

http://kafka.apache.org/documentation.html#basic_ops_cluster_expansion

 

https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-6.ReassignPartitionsTool

 

说明:

当我们对kafka集群扩容时,需要满足2点要求:

 

  1. 将指定topic迁移到集群内新增的node上。
  2. 将topic的指定partition迁移到新增的node上。

1. 迁移topic到新增的node上

 

假如现在一个kafka集群运行三个broker,broker.id依次为101,102,103,后来由于业务数据突然暴增,需要新增三个broker,broker.id依次为104,105,106.目的是要把push-token-topic迁移到新增node上。

 

1、脚本migration-push-token-topic.json文件内容如下:

 

Java代码  收藏代码
  1. {  
  2.   
  3. "topics":  
  4.   
  5. [  
  6.   
  7. {  
  8.   
  9. "topic""push-token-topic"  
  10.   
  11. }  
  12.   
  13. ],  
  14.   
  15. "version":1  
  16.   
  17. }  
 

 

2、执行脚本如下所示:

 

Java代码  收藏代码
  1. root@localhost:$  ./bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183 --topics-to-move-json-file  migration-push-token-topic.json  --broker-list  "104,105,106"  --generate  
 

 

生成分配partitions的json脚本 备份恢复使用:

Current partition replica assignment

{"version":1,"partitions":[{"topic":"cluster-switch-topic","partition":10,"replicas":[8]},{"topic":"cluster-switch-topic","partition":5,"replicas":[4]},{"topic":"cluster-switch-topic","partition":3,"replicas":[5]},{"topic":"cluster-switch-topic","partition":4,"replicas":[5]},{"topic":"cluster-switch-topic","partition":9,"replicas":[5]},{"topic":"cluster-switch-topic","partition":1,"replicas":[5]},{"topic":"cluster-switch-topic","partition":11,"replicas":[4]},{"topic":"cluster-switch-topic","partition":7,"replicas":[5]},{"topic":"cluster-switch-topic","partition":2,"replicas":[4]},{"topic":"cluster-switch-topic","partition":0,"replicas":[4]},{"topic":"cluster-switch-topic","partition":6,"replicas":[4]},{"topic":"cluster-switch-topic","partition":8,"replicas":[4]}]}

 

 

重新分配parttions的json脚本如下:

migration-topic-cluster-switch-topic.json

 

 {"version":1,"partitions":[{"topic":"cluster-switch-topic","partition":10,"replicas":[5]},{"topic":"cluster-switch-topic","partition":5,"replicas":[4]},{"topic":"cluster-switch-topic","partition":4,"replicas":[5]},{"topic":"cluster-switch-topic","partition":3,"replicas":[4]},{"topic":"cluster-switch-topic","partition":9,"replicas":[4]},{"topic":"cluster-switch-topic","partition":1,"replicas":[4]},{"topic":"cluster-switch-topic","partition":11,"replicas":[4]},{"topic":"cluster-switch-topic","partition":7,"replicas":[4]},{"topic":"cluster-switch-topic","partition":2,"replicas":[5]},{"topic":"cluster-switch-topic","partition":0,"replicas":[5]},{"topic":"cluster-switch-topic","partition":6,"replicas":[5]},{"topic":"cluster-switch-topic","partition":8,"replicas":[5]}]}

 

3、执行:

 

Java代码  收藏代码
  1. root@localhost:$   bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183 --reassignment-json-file migration-topic-cluster-switch-topic.json --execute  
 

 

 执行后会生成一个json格式文件expand-cluster-reassignment.json 

4、查询执行状态:
Java代码  收藏代码
  1. bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183 --reassignment-json-file expand-cluster-reassignment.json --verify  
 
正常执行后会返回当前数据迁移的不用partion的,信息状态类似下面

 

Java代码  收藏代码
  1. Reassignment of partition [push-token-topic,0] completed successfully   //移动成功  
  2. Reassignment of partition [push-token-topic,1] is in progress          //这行代表数据在移动中  
  3. Reassignment of partition [push-token-topic,2] is in progress  
  4. Reassignment of partition [push-token-topic,1] completed successfully   
  5. Reassignment of partition [push-token-topic,2] completed successfully  

 

 这样做不会影响原来集群上的topic业务

 

2.topic修改(replicats-factor)副本个数

 

假如初始时push-token-topic为一个副本,为了提高可用性,需要改为2副本模式。

脚本replicas-update-push-token-topic.json文件内容如下:

{

        "partitions":

                [

                {

                        "topic": "log.mobile_nginx",

                        "partition": 0,

                        "replicas": [101,102,104]

                },

                {

                        "topic": "log.mobile_nginx",

                        "partition": 1,

                        "replicas": [102,103,106]

                }            

],             

        "version":1

}

 

 2、执行:

Java代码  收藏代码
  1. root@localhost:$ ./bin/kafka-reassign-partitions.sh --zookeeper   192.168.2.225:2183 --reassignment-json-file  replicas-update-push-token-topic.json  --execute  
执行后会列出当前的partition和修改后的patition
3、verify
Java代码  收藏代码
  1. bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2181 --reassignment-json-file replicas-update-push-token-topic.json --verify  
 如下:
Status of partition reassignment:
Reassignment of partition [log.mobile_nginx,0] completed successfully
Reassignment of partition [log.mobile_nginx,1] completed successfully

 

3.自定义分区和迁移

 

1、The first step is to hand craft the custom reassignment plan in a json file-

> cat custom-reassignment.json
{"version":1,"partitions":[{"topic":"foo1","partition":0,"replicas":[5,6]},{"topic":"foo2","partition":1,"replicas":[2,3]}]}
2、Then, use the json file with the --execute option to start the reassignment process-
> bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file custom-reassignment.json --execute

Current partition replica assignment

{"version":1,
 "partitions":[{"topic":"foo1","partition":0,"replicas":[1,2]},
               {"topic":"foo2","partition":1,"replicas":[3,4]}]
}

Save this to use as the --reassignment-json-file option during rollback
Successfully started reassignment of partitions
{"version":1,
 "partitions":[{"topic":"foo1","partition":0,"replicas":[5,6]},
               {"topic":"foo2","partition":1,"replicas":[2,3]}]
}

 

3、The --verify option can be used with the tool to check the status of the partition reassignment. Note that the same expand-cluster-reassignment.json (used with the --execute option) should be used with the --verify option

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file custom-reassignment.json --verify

Status of partition reassignment:
Reassignment of partition [foo1,0] completed successfully
Reassignment of partition [foo2,1] completed successfully 

 

4.topic的分区扩容用法

 

a.先扩容分区数量,脚本如下:

例如:push-token-topic初始分区数量为12,目前到增加到15个

root@localhost:$ ./bin/kafka-topics.sh --zookeeper 192.168.2.225:2183 --alter --partitions 15 --topic   push-token-topic

 

b.设置topic分区副本

root@localhost:$ ./bin/kafka-reassign-partitions.sh --zookeeper  192.168.2.225:2183

--reassignment-json-file partitions-extension-push-token-topic.json  --execute

脚本partitions-extension-push-token-topic.json文件内容如下:

 

 

{  

        "partitions":  

                [  

                {  

                        "topic": "push-token-topic",  

                        "partition": 12,  

                        "replicas": [101,102]  

                },  

                {  

                        "topic": "push-token-topic",  

                        "partition": 13,  

                        "replicas": [103,104]  

                },  

                {  

                        "topic": "push-token-topic",  

                        "partition": 14,  

                        "replicas": [105,106]  

                }  

                ],               

        "version":1  

}

分享到:
评论

相关推荐

    kafka3.2常用命令

    ### Kafka 3.2 常用命令详解 #### 一、启动 ZooKeeper 服务 在启动 Kafka 之前,必须先启动 ZooKeeper 服务。ZooKeeper 为 Kafka 提供了集群协调服务。 ##### 操作步骤: 1. **打开命令行窗口**: - 打开 cmd ...

    kafka常用的基本命令行

    以下是一些常见的Kafka命令行工具及其用途: 1. **启动和停止Kafka服务** - `bin/zookeeper-server-start.sh config/zookeeper.properties`: 启动Zookeeper服务,Kafka依赖Zookeeper进行集群协调。 - `bin/kafka-...

    Kafka 常用命令行详细介绍及整理

    以下是对 Kafka 常用命令行的详细说明: 1. **查看 Topic 详细信息**: 使用 `kafka-topics.sh` 命令行工具,配合 `-zookeeper` 参数指定 ZooKeeper 地址,`-describe` 参数来获取 Topic 的详细信息,例如: ```...

    Kafka的一些常用功能点

    安装Kafka涉及下载Apache Kafka的二进制包,解压后配置环境变量,并启动Zookeeper(Kafka的依赖服务)和Kafka服务器。启动命令通常是`bin/zookeeper-server-start.sh config/zookeeper.properties`和`bin/kafka-...

    kafka基本指令

    #### 三、Kafka常用操作命令 Kafka提供了丰富的命令行工具来管理和操作Topic。 ##### 1. 查看当前服务器中的所有Topic 可以通过`kafka-topics.sh`命令来查看当前服务器上的所有Topic: ```bash kafka-topics.sh ...

    大数据Kafka架构原理.pdf

    4. **Kafka常用命令和参数**: Kafka提供了丰富的命令行工具,用于管理Topics、Producers、Consumers等。例如: - `kafka-topics.sh`:创建、查看、修改Topic。 - `kafka-console-producer.sh`:启动命令行...

    CENTOS+KAFKA+GOLANG

    ##### 1.3 常用命令总结 - **文件/文件夹复制**:`cp <source> <destination>` - **解压文件**:`tar -zxvf <filename>` - **移动文件或文件夹**:`mv <source> <destination>` - **切换目录**:`cd <directory>` ...

    Hadoop+Hive+Spark+Kafka+Zookeeper+Flume+Sqoop+Azkaban+Scala

    常用 Shell 命令 Java API 的使用 基于 Zookeeper 搭建 Hadoop 高可用集群 二、Hive 简介及核心概念 Linux 环境下 Hive 的安装部署 CLI 和 Beeline 命令行的基本使用 常用 DDL 操作 分区表和分桶表 视图和索引 常用 ...

    xshell-linux命令

    本文将详细介绍 xshell 中的常用命令,包括文件管理、目录操作、文件查看、搜索和编辑等方面。 一、文件管理命令 1. 命令 ls:用于列出文件和目录,包括隐藏文件。例如,ls -la 命令可以显示当前目录下的所有文件...

    聊聊高并发高可用那些事(Kafka、Redis、MySQL)

    8. **命令行操作**:如`kafka-topics.sh`创建和管理主题,`kafka-console-producer.sh`发送消息。 9. **生产者与消费者代码示例**:展示如何编程与Kafka交互。 10. **Kafka Tool**:Windows下的可视化工具,方便...

    大数据学习路线 大数据技术栈思维导图 大数据常用软件安装指南

    HDFS 常用 Shell 命令 HDFS Java API 的使用 基于 Zookeeper 搭建 Hadoop 高可用集群 Hive Hive 简介及核心概念 Linux 环境下 Hive 的安装部署 Hive CLI 和 Beeline 命令行的基本使用 Hive 常用 DDL 操作 Hive 分区...

    sh代码-Shell 脚本方式启动Kafka服务

    3. **添加Kafka的bin目录到PATH**:这样我们可以在脚本中直接调用Kafka的命令行工具。 ```bash export PATH=$PATH:$KAFKA_HOME/bin ``` 4. **启动Zookeeper**:Kafka依赖Zookeeper进行集群管理和元数据存储,...

    OpenJDK8U-jdk-x64-linux-hotspot-8u212b03.zip

    10. **消费与生产消息**:你可以使用Kafka的命令行工具来测试生产者和消费者,或者通过编写Java、Python等语言的程序来操作Kafka。 通过以上步骤,你将在Linux系统上成功部署了Kafka服务,并使用OpenJDK 8运行它。...

    flume kafak实验报告.docx

    在大数据实时处理领域,Flume、Kafka 和 Spark Streaming 是常用的数据采集、传输与处理工具。本实验报告详细阐述了如何将这三个组件结合使用,构建一个高效的数据流处理系统。 一、Flume 与 Spark Streaming 的...

    pycharm中执行window环境python脚本多条shell命令

    值得注意的是,在Windows命令行中,逻辑运算符`&&`、`||`被用来控制命令之间的顺序执行,而不是用于表达式求值。 #### 示例代码分析 在给出的部分内容中,使用了`os.popen`函数来执行shell命令。这里举一个具体的...

    卡夫卡控制台聊天

    8. **Kafka命令行工具**:Kafka提供了一系列的命令行工具,如`kafka-console-producer.sh`和`kafka-console-consumer.sh`,用于在命令行界面与Kafka集群交互,生产和消费消息。 9. **Docker网络**:在Docker ...

    Kafka-Tail-Producer:此应用程序用于通过 Linux tail cmd 从指定的日志文件中收集日志数据

    `tail`是Linux系统中一个常用的命令行工具,它用于查看文件的尾部内容。在Kafka-Tail-Producer中,`tail -f`参数被用来持续监控日志文件,当文件有新的内容追加时,`tail`会立即显示出来,非常适合实时数据监控。 #...

Global site tag (gtag.js) - Google Analytics