Kafka學習之Replication tools之Reassign Partitions Tool
此工具能做啥?
此工具的作用跟Referred Replica Leader Election工具類似,都是為了平衡叢集的負載。但工具不僅為某一個partition從assigned replica中選舉一個新的leader,還改變partition的assigned replica,回憶一下,follower需要從leader上fetch資料為了保持同步,因此有時僅僅平衡leadershipi的負載是不夠的(還需要考慮follower的負載)。下面是此工具工作的步驟:
1,此工具更新ZK的路徑"/admin/reassign_partitions",寫入一個topic的partition列表和一個new assigned replica列表(如果設定了json檔案了的話)。
2,controller監聽ZK上的路徑。當資料update時被觸發,controller從ZK讀取更新的topic partition的列表和它們的assigned replicas。
3,對於每一個topic的partition,controller做如下的事情:
3.1. 開始一個新的replicas,由RAR - AR(RAR中存在,AR中不存在的replica)組成(RAR = Reassigned Replicas, AR = original list of Assigned Replicas)。
3.2. 在新的replica跟leader同步之前保持等待狀態。
3.3. 如果leader不在RAR中,從RAR選舉一個新的leader。
3.4 4. 停止老的replicas,由AR - RAR(AR中存在,RAR中不存在的replica)組成。
3.5. 寫入新的AR。
3.6. 從/admin/reassign_partitions刪除partition。
注意此工具只更新zk並退出,controller非同步為partitions reassign replicas。
此工具現在只在0.8分支中提供。
如何使用?
警告:此工具在0.8的beta版本釋出,並有一些bug,在0.8.1版本中是穩定的。
bin/kafka-reassign-partitions.sh Option Description ------ ----------- --broker-list <brokerlist> The list of brokers to which the partitions need to be reassigned in the form "0,1,2". This is required for automatic topic reassignment. --execute [execute] This option does the actual reassignment. By default, the tool does a dry run --manual-assignment-json-file <manual The JSON file with the list of manual assignment json file path> reassignments.This option or topics- to-move-json-file needs to be specified. The format to use is - {"partitions": [{"topic": "foo", "partition": 1, "replicas": [1,2,3] }], "version":1 } --topics-to-move-json-file <topics to The JSON file with the list of topics reassign json file path> to reassign.This option or manual- assignment-json-file needs to be specified. The format to use is - {"topics": [{"topic": "foo"},{"topic": "foo1"}], "version":1 } --zookeeper <urls> REQUIRED: The connection string for the zookeeper connection in the form host:port. Multiple URLS can be given to allow fail-over.
注意此工具預設執行在dry-run(預演)模式下,並不會初始化partiton movement。只有開啟--execute選項,此工具才會開始執行。
叢集擴充套件
在0.8版本中,此工具可以用來擴充套件(expand)一個已存在的叢集。叢集擴充套件涉及到引入了新的broker id。通常當為一個叢集中新增一個broker時,它們不會從現存的topic接收到任何資料,直到使用這個工具把現存的topics/partitions assign到新的broker上。此工具使用2個選項來讓批量轉移topic到新的broker變得更簡單,這2個選項分別為:a)要轉移的topics;b)新增的broker的列表。使用這2個選項,此工具能自動的確定這些topic的partitions的位置。下面的例子把2個topic(foo1,foo2)轉移到新增的broker(id為5,6,7)。
nnarkhed$ ./bin/kafka-reassign-partitions.sh --topics-to-move-json-file topics-to-move.json --broker-list "5,6,7" --execute
nnarkhed$ cat topics-to-move.json
{"topics":
[{"topic": "foo1"},{"topic": "foo2"}],
"version":1
}
選擇一些partition進行轉移
此工具也可以有選擇的把一些特定的partition的一些replica轉移到一個特定的broker。如果你有一個不負載不均衡的叢集,你可以使用這個工具來有選擇的轉移一些partition。在這種模式下,此工具使用一個檔案,檔案包含了要轉移的partition的列表,還有轉移後replica分佈的broker id列表。
下面的例子把一個partition的replica從broker 1,2,3轉移到了broker 1,2,4上。
nnarkhed$ ./bin/kafka-reassign-partitions.sh --manual-assignment-json-file partitions-to-move.json --execute
nnarkhed$ cat partitions-to-move.json
{"partitions":
[{"topic": "foo",
"partition": 1,
"replicas": [1,2,4] }],
相關推薦
Kafka學習之Replication tools之Reassign Partitions Tool
此工具能做啥? 此工具的作用跟Referred Replica Leader Election工具類似,都是為了平衡叢集的負載。但工具不僅為某一個partition從assigned replica中選舉一個新的leader,還改變partition的assigned replica,回憶一下,follow
Kafka學習之Replication tools之Add Partition Tool
原文連結:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-5.AddPartitionTool 此工具能做啥? Kafka的partition表示併發度的單元:一個topic的訊息可以分
Apache Kafka學習(三)之Kafka常用命令
windows:bin\zkServer.cmd 2、啟動kafka(安裝目錄下使用命令) Linux:bin/kafka-server-start.sh start config/server.properties windows:bin\windows\kafka-server-start.b
Kafka 學習筆記之 架構
分別是 producer 跨語言 lan protoc repl cnblogs bsp 動態 Kafka的概念: 1、 AMQP協議 Advanced Message Queuing Protocol (高級消息隊列協議) The Advanced Messag
Kafka 學習筆記之 ZooKeeper作用
9.png lec 管理 信息 發現 ges ima cti http Kafka使用ZooKeeper 配置管理 Leader Election 服務發現 首先進入ZooKeeper客戶端: ls / 可以看到有以下節點: 查看Topic 配置信息:體現了ZooK
Kafka 學習筆記之 Consumer API
multipl 以及 keep manage broker api kafka sum multi Kafka提供了兩種Consumer API High Level Consumer API Low Level Consumer API(Kafka詭異的稱之為Simpl
Kafka 學習筆記之 Kafka0.11之console-producer/console-consumer
scribe tor 新的 producer 建立 actor sum consumer creat Kafka 學習筆記之 Kafka0.11之console-producer/console-consumer: 啟動Zookeeper 啟動Kafka0.11 創建一
我的kafka學習之路
初識kafka Kafka 從何而來?我們為什麼要開發 Kafka ? Kafka 到底是什麼? Kafka 最初是 Linkedln 的一個內部基礎設施系統。我們發現,雖然有很多資料庫和系統可以用來儲存資料,但在我們的架構裡,剛好缺一個可以幫助處理持續資料流的元件。在開發 Kafka 之前
Kafka學習之路 (一)Kafka的簡介
要求 異步通信 images 等等 ron 服務器角色 消費 消息 崩潰 一、簡介 1.1 概述 Kafka是最初由Linkedin公司開發,是一個分布式、分區的、多副本的、多訂閱者,基於zookeeper協調的分布式日誌系統(也可以當做MQ系統),常見可以用於web/ng
Kafka學習之路 (二)Kafka的架構
most 工具 路由 冪等 用戶 toc 目標 支持 mem 一、Kafka的集群架構 如上圖所示,一個典型的Kafka集群中包含若幹Producer(可以是web前端產生的Page View,或者是服務器日誌,系統CPU、Memory等),若幹broker(Kafka支持
Kafka學習之路 (五)Kafka在zookeeper中的存儲
序號 hadoop state 空閑 pre 離開 substr doc 退出 當kafka啟動的時候,就會向zookeeper裏面註冊一些信息,這些數據也稱為Kafka的元數據信息。 一、Kafka在zookeeper中存儲結構圖 二、分析 根目錄下的結構 服務端開啟的
Kafka學習之路 (三)Kafka的高可用
中一 不同 ive topic 停止工作 查找 同時 llb fail 一、高可用的由來 1.1 為何需要Replication 在Kafka在0.8以前的版本中,是沒有Replication的,一旦某一個Broker宕機,則其上所有的Partition數據都不可被消費,這
Kafka學習之路 (四)Kafka的安裝
server 表達 mage 配置 list 執行 ase cti releases zookeeper1:192.168.1.11 zookeeper2:192.168.1.12 zookeeper3:192.168.1.13 kafka1:192.168.1.14 k
Kafka學習之路 (五)Kafka在zookeeper中的儲存
目錄 正文 回到頂部 一、Kafka在zookeeper中儲存結構圖 回到頂部 二、分析 2.1 topic註冊資訊 /brokers/topics/[topic] : 儲存某個topic的partitions所有分配資訊 [zk: localh
Kafka學習之consumer端部署及API
1、consumer.properties:檔案位於/resources目錄下 zookeeper.connect=192.168.0.1:2181test-datacenter/test-server # timeout in ms for connecting to
Kafka之——replication factor: 1 larger than available brokers: 0 問題解決方案
一、問題 用kfafka命令:./kafka-server-start.sh ../config/server.properties &啟動時報以下錯誤: [2018-01-28 21:54:44,745] ERROR [KafkaApi-100] error
Kafka 學習筆記(八)之producer讀取file
要想讓Kafka用到實際中,就需要學會讓Kafka從檔案中讀取內容,傳送到topic裡,以供consumer讀取。我們以前的幾篇,自己產生data的,不是從file中讀的。 之前先下載好scp,scp是secure copy的簡寫,用於在Linux下進行遠端拷貝檔案的命令。
Docker下的Kafka學習之二:搭建叢集環境
在上一章《Docker下的Kafka學習之一:製作叢集用的映象檔案》中,我們把繼承了zookeeper和kafka的映象做好了,現在我們就用這個映象來搭建Kafka叢集環境。 Docker軟體版本 本次實戰的電腦作業系統是Win10專業版,安裝的Dock
Kafka學習之監控
參考文件:https://kafka.apache.org/documentation.html#monitoring Kafka使用Yammer Metrics來報告server和client的眾多metric。還可以使用其他的外掛來跟你的監控系統連線起來,比如https://cwiki.apache.
Kafka學習之七 為什麼說Kafka使用磁碟比記憶體快
Kafka最核心的思想是使用磁碟,而不是使用記憶體,可能所有人都會認為,記憶體的速度一定比磁碟快,我也不例外。在看了Kafka的設計思想,查閱了相應資料再加上自己的測試後,發現磁碟的順序讀寫速度和記憶體持平。 而且Linux對於磁碟的讀寫優化也