kafka operation

運行環境:mac osbootstrap

1. 啓動zookeeper測試

./bin/zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties

2. 啓動kafka服務spa

./bin/kafka-server-start /usr/local/etc/kafka/server.properties

3. 查看topic列表代理

./bin/kafka-topics --list --zookeeper localhost:2181

4. 建立topic日誌

./bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic hezhixiong

--create:指定建立topic動做
--zookeeper:指定kafka鏈接zk的地址
--replication-factor:指定每一個分區的複製因子個數,默認1個
--partitions:指定當前建立的kafka分區數量,默認爲1個
--topic:指定新建topic的名稱

5. 查看topic的描述信息code

./bin/kafka-topics --describe --zookeeper localhost:2181 --topic hezhixiong

6. 修改topic信息server

./bin/kafka-topics --zookeeper localhost:2181 --alter --topic hezhixiong --partitions 4
<!-- Kafka分區數量只容許增長,不容許減小 -->

7. 刪除topicblog

./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.

默認狀況下Kafka的Topic是無法直接刪除的,而是標記刪除而已。若是須要完全刪除topic,有如下兩種方式:
1. 經過delete命令刪除後,手動將本地磁盤以及zk上的相關topic的信息刪除
2. 配置server.properties文件,給定參數delete.topic.enable=true,重啓kafka服務,此時執行delete命令表示容許進行Topic的刪除

8. 生產者get

./bin/kafka-console-producer --broker-list localhost:9092 --topic hezhixiong

9. 消費者kafka

./bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic hezhixiong --from-beginning

 10. broker集羣

  首先爲每一個broker建立一個配置文件:

cd /usr/local/etc/kafka
cp server.properties server_1.properties
cp server.properties server_2.properties

vi server_1.properties
    broker.id=1 
    listeners=PLAINTEXT://:9093 
    log.dir=/tmp/kafka-logs/one
vi server_2.properties
    broker.id=2 
    listeners=PLAINTEXT://:9094 
    log.dir=/tmp/kafka-logs/two

  broker.id是集羣中每一個節點的惟一且永久的名稱,咱們修改端口和日誌目錄是由於咱們如今在同一臺機器上運行,咱們要防止broker在同一端口上註冊和覆蓋對方的數據。

  咱們已經運行了zookeeper和剛纔的一個kafka節點,全部咱們只須要在啓動2個新的kafka節點。

./bin/kafka-server-start /usr/local/etc/kafka/server_1.properties
./bin/kafka-server-start /usr/local/etc/kafka/server_2.properties

  如今,咱們建立一個新topic,把備份設置爲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

從上面的輸出,咱們能夠得出結論,第一行給出全部分區的摘要,顯示主題名稱,分區數量和咱們已經選擇的複製因子。在第二行中,每一個節點將是分區的隨機選擇部分的領導者。

在個人例子中,我看到的第一個broker(with broker.id 2)是領導者。 而後Replicas:2,1,0 意味着全部代理複製主題。最後 Isr 是 in-sync 副本的集合。 那麼,這是副本的子集,當前活着並被領導者遇上。

"leader":該節點負責該分區的全部的讀和寫,每一個節點的leader都是隨機選擇的。
"replicas":備份的節點列表,不管該節點是不是leader或者目前是否還活着,只是顯示。
"isr":「同步備份」的節點列表,也就是活着的節點而且正在同步leader。

  啓動生產者和消費者,在生產者端發送消息,在消費者端能看到消息的消息

./bin/kafka-console-producer --broker-list localhost:9092 --topic hzx-new   (生產者)
./bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic hzx-new --from-beginning  (消費者)

   體驗並測試kafka集羣的容錯,目前Leader是broker2,因此結束調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已經再也不同步備份集合裏了,備份節點之一的broker1成爲了新的leader了。

 

參考資料:

http://orchome.com/6

相關文章
相關標籤/搜索