搭建跨境电商系统的关键要素与实用建议探讨
1132
2022-05-28
6.5.x。
执行扩容操作,进行数据迁移在数据迁移过程中由于Kafka节点故障,导致Kafka Topic元数据处于紊乱状态,导致无法进行读写操作。
例如:
Topic:O_PS_SEQ_DATA_BUSI_CRD,其中Partition:289, ISR列表为26,29;Leader为26;Replicas列表为10,6。当需要访问Partition 289时,获取Leader为26,则客户端连接26进行读写请求。
通过Kafka自身携带的console-consumer进行数据消费,可以发现元数据紊乱,导致consumer无法正常消费,提示fetch offsets for partition failed due to obsolete leadership infomation。
Kafka服务异常。
生产者无法发送数据到Kafka。
消费者无法从Kafka中消费数据。
恢复时长与数据量相关。
操作影响较大,需要提前研发进行沟通确认,与各方达成一致后方可实施。
执行修复之前,必须先准备好如下信息:
序号
项目
操作方式
1
集群账号信息
申请集群admin账户的密码。
2
节点账号信息
申请集群内节点的omm、root用户密码。
3
SSH远程登录工具
准备PuTTY或SecureCRT等工具。
4
客户端
已提前安装好客户端
针对这种情况,采用对异常Partition重新reassign的方式来进行处理。
根据partition的分布和leader,然后去leader节点上确认leader上的源数据存在,再找一个磁盘空间相对充裕的节点,把有问题的partition重分配到原来的leader节点和一个新的节点上。
执行命令,进入客户端安装目录,例如“/opt/client”。
cd /opt/client
执行命令,配置环境变量。
source bigdata_env
如果集群采用了安全版本,要进行安全认证。
kinit admin
根据提示输入正确的用户密码。
[root@mgtdat-sh-3-01-3 client]#source bigdata_env #配置环境变量 [root@mgtdat-sh-3-01-3 client]#kinit admin #设置kinit认证 Password for admin@HADOOP.COM:
执行Kafka相关命令,获取Topic分布信息和副本同步信息,观察返回结果。
kafka-topics.sh
--describe
--zookeeper
例如:
[root@mgtdat-sh-3-01-3 client]#kafka-topics.sh --describe --zookeeper 10.149.0.90:24002/kafka Topic:topic1 PartitionCount:2 ReplicationFactor:2 Configs: Topic: topic1 Partition: 0 Leader: 26 Replicas: 23,25 Isr: 26 Topic: topic1 Partition: 1 Leader: 24 Replicas: 24,23 Isr: 24,23
其中,Replicas对应副本分布信息,Isr对应副本同步信息。
如果Topic Partition对应的Leader中Broker的id不在Replicas(副本)列表中。
该Partition为异常Partition,需要通过重新reassign进行修复。
手工创建迁移Json文件,内容为需要移动的topic和信息,文件保存为expand-cluster-reassignment.json。
生成的expand-cluster-reassignment.json放置在客户端安装目录。
根据partition的分布和leader,然后去leader节点上确认leader上的源数据存在,再找一个磁盘空间相对充裕的节点,把有问题的partition重分配到原来的leader节点和一个新的节点上(非Replicas中节点)。
根据上述规则,生成迁移Json文件。
例如:
{"version":1, "partitions":[{"topic":"topic1","partition":0,"replicas":[26,30]}]}
其中26为partition的原来的leader, 30为磁盘相对充裕的节点,且不是Replicas中的节点。
根据手工生成的Partitions分布情况执行重分布。
kafka-reassign-partitions.sh
--zookeeper
--reassignment-json-file
--execute
例如:
[root@mgtdat-sh-3-01-3 client]#kafka-reassign-partitions.sh --zookeeper 10.149.0.90:24002/kafka --reassignment-json-file /opt/client/expand-cluster-reassignment.json --execute Current partition replica assignment {"version":1,"partitions":[{"topic":"topic1","partition":1,"replicas":[23,25]},{"topic":"topic1","partition":0,"replicas":[26,30]}]} Save this to use as the --reassignment-json-file option during rollback Successfully started reassignment of partitions {"version":1,"partitions":[{"topic":"topic1","partition":0,"replicas":[26,30]}]}
命令会打印Topic Partitions原始分布情况和新的分布情况。
确认Partitions重分布执行结果。
kafka-reassign-partitions.sh
--zookeeper
--reassignment-json-file
--verify
例如:
[root@mgtdat-sh-3-01-3 client]#kafka-reassign-partitions.sh --zookeeper 10.149.0.90:24002/kafka --reassignment-json-file /opt/client/expand-cluster-reassignment.json --verify Status of partition reassignment: Reassignment of partition [topic1,0] completed successfully
执行命令,进入客户端安装目录,例如“/opt/client”。
cd /opt/client
执行命令,配置环境变量。
source bigdata_env
如果集群采用了安全版本,要进行安全认证。
kinit admin
根据提示输入正确的用户密码。
[root@mgtdat-sh-3-01-3 client]#source bigdata_env #配置环境变量 [root@mgtdat-sh-3-01-3 client]#kinit admin #设置kinit认证 Password for admin@HADOOP.COM:
执行Kafka相关命令,获取Topic分布信息和副本同步信息,观察返回结果。
kafka-topics.sh
--describe
--zookeeper
例如:
[root@mgtdat-sh-3-01-3 client]#kafka-topics.sh --describe --zookeeper 10.149.0.90:24002/kafka Topic:topic1 PartitionCount:2 ReplicationFactor:2 Configs: Topic: topic1 Partition: 0 Leader: 26 Replicas: 26,30 Isr: 26,30 Topic: topic1 Partition: 1 Leader: 24 Replicas: 24,23 Isr: 24,23
其中,Replicas对应副本分布信息,Isr对应副本同步信息。
根据迁移Partition,找到Partition信息,其中Replicas信息和迁移方案一致,则说明迁移成功。
待某Topic的所有异常Partition均已完成修复,可以通过消费者进行数据消费,从而进行Topic状态测试。
不同版本消费者命令不同,请根据版本确定执行命令。
FusionInsight HD V100R002C50SPC20*
kafka-console-consumer.sh
--topic
--zookeeper
--from-beginning
[root@10-10-10-11 client]#kafka-console-consumer.sh --topic topic1 --zookeeper 10.149.0.90:24002/kafka --from-beginning 1 2 3
其中,1 ,2 ,3为Topic中消息信息。
FusionInsight HD 6.5.0版本
kafka-console-consumer.sh
--topic
-- bootstrap-server
--new-consumer < consumer.properties >
--from-beginning
例如:
[root@10-10-10-11 client]#kafka-console-consumer.sh --topic topic1 --bootstrap-server 10.149.0.90:21007 --new-consumer --consumer.config /opt/client/Kafka/kafka/config/consumer.properties --from-beginning 1 2 3
其中,1 ,2 ,3为Topic中消息信息
EI企业智能 FusionInsight Kafka
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。