亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
1303
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小時內刪除侵權內容。