kafka operation
運行環(huán)境:mac os
1.?啟動zookeeper
./bin/zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties2.?啟動kafka服務(wù)
./bin/kafka-server-start /usr/local/etc/kafka/server.properties3.?查看topic列表
./bin/kafka-topics --list --zookeeper localhost:21814. 創(chuàng)建topic
./bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic hezhixiong--create:指定創(chuàng)建topic動作 --zookeeper:指定kafka連接zk的地址 --replication-factor:指定每個分區(qū)的復(fù)制因子個數(shù),默認(rèn)1個 --partitions:指定當(dāng)前創(chuàng)建的kafka分區(qū)數(shù)量,默認(rèn)為1個 --topic:指定新建topic的名稱5. 查看topic的描述信息
./bin/kafka-topics --describe --zookeeper localhost:2181 --topic hezhixiong6. 修改topic信息
./bin/kafka-topics --zookeeper localhost:2181 --alter --topic hezhixiong --partitions 4 <!-- Kafka分區(qū)數(shù)量只允許增加,不允許減少 -->7. 刪除topic
./bin/kafka-topics --zookeeper localhost:2181 --delete --topic hezhixiong Topic hezhixiong is marked for deletion. Note: This will have no impact if delete.topic.enable is not set to true.默認(rèn)情況下Kafka的Topic是沒法直接刪除的,而是標(biāo)記刪除而已。如果需要徹底刪除topic,有以下兩種方式: 1. 通過delete命令刪除后,手動將本地磁盤以及zk上的相關(guān)topic的信息刪除 2. 配置server.properties文件,給定參數(shù)delete.topic.enable=true,重啟kafka服務(wù),此時執(zhí)行delete命令表示允許進(jìn)行Topic的刪除8. 生產(chǎn)者
./bin/kafka-console-producer --broker-list localhost:9092 --topic hezhixiong9. 消費者
./bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic hezhixiong --from-beginning?10. broker集群
首先為每個broker創(chuàng)建一個配置文件:
cd /usr/local/etc/kafka cp server.properties server_1.properties cp server.properties server_2.propertiesvi server_1.propertiesbroker.id=1 listeners=PLAINTEXT://:9093 log.dir=/tmp/kafka-logs/one vi server_2.propertiesbroker.id=2 listeners=PLAINTEXT://:9094 log.dir=/tmp/kafka-logs/twobroker.id是集群中每個節(jié)點的唯一且永久的名稱,我們修改端口和日志目錄是因為我們現(xiàn)在在同一臺機器上運行,我們要防止broker在同一端口上注冊和覆蓋對方的數(shù)據(jù)。
我們已經(jīng)運行了zookeeper和剛才的一個kafka節(jié)點,所有我們只需要在啟動2個新的kafka節(jié)點。
./bin/kafka-server-start /usr/local/etc/kafka/server_1.properties ./bin/kafka-server-start /usr/local/etc/kafka/server_2.properties現(xiàn)在,我們創(chuàng)建一個新topic,把備份設(shè)置為3
./bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic hzx-new./bin/kafka-topics --describe --zookeeper localhost:2181 --topic hzx-new 查看topic得到輸出如下:
Topic:hzx-new PartitionCount:1 ReplicationFactor:3 Configs:
Topic: hzx-new Partition: 0 Leader: 2 Replicas: 2,1,0 Isr: 2,1,0
從上面的輸出,我們可以得出結(jié)論,第一行給出所有分區(qū)的摘要,顯示主題名稱,分區(qū)數(shù)量和我們已經(jīng)選擇的復(fù)制因子。在第二行中,每個節(jié)點將是分區(qū)的隨機選擇部分的領(lǐng)導(dǎo)者。
在我的例子中,我看到的第一個broker(with broker.id 2)是領(lǐng)導(dǎo)者。 然后Replicas:2,1,0 意味著所有代理復(fù)制主題。最后 Isr 是 in-sync 副本的集合。 那么,這是副本的子集,當(dāng)前活著并被領(lǐng)導(dǎo)者趕上。
"leader":該節(jié)點負(fù)責(zé)該分區(qū)的所有的讀和寫,每個節(jié)點的leader都是隨機選擇的。
"replicas":備份的節(jié)點列表,無論該節(jié)點是否是leader或者目前是否還活著,只是顯示。
"isr":“同步備份”的節(jié)點列表,也就是活著的節(jié)點并且正在同步leader。
啟動生產(chǎn)者和消費者,在生產(chǎn)者端發(fā)送消息,在消費者端能看到消息的消息
./bin/kafka-console-producer --broker-list localhost:9092 --topic hzx-new (生產(chǎn)者) ./bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic hzx-new --from-beginning (消費者)? 體驗并測試kafka集群的容錯,目前Leader是broker2,所以結(jié)束調(diào)broker2,并查看topic:hzx-new 的信息,輸出如下
Topic:hzx-new PartitionCount:1 ReplicationFactor:3 Configs:Topic: hzx-new Partition: 0 Leader: 1 Replicas: 2,1,0 Isr: 1,0可以看出 broker2已經(jīng)不再同步備份集合里了,備份節(jié)點之一的broker1成為了新的leader了。?
參考資料:
http://orchome.com/6
轉(zhuǎn)載于:https://www.cnblogs.com/hezhixiong/p/10078994.html
總結(jié)
以上是生活随笔為你收集整理的kafka operation的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL笔试经典50题及答案解析(题目41
- 下一篇: 上传文件Base64格式(React)