一、常用命令
最近在學習kafka,在搭建kafka集羣時,用到了很多常用命令,藉此記錄下來,不斷學習不斷記錄。
這是kafka的文件目錄
1.啓動kafka
-daemon 代表後臺運行方式
./bin/kafka-server-start.sh -daemon ./config/server.properties
2.停止kafka服務
./bin/kafka-server-stop.sh
3.創建topic,創建一個topic名爲kafka1
單機
./bin/kafka-topics.sh --create --zookeeper 192.168.211.137:2181 --replication-factor 3 \
--partitions 3 --topic kafka1
集羣:
./bin/kafka-topics.sh --create --zookeeper 192.168.211.137:2181,192.168.211.139:2181,\
192.168.211.140:2181 --replication-factor 3 --partitions 3 --topic kafka1
參數解析:
- replication-factor 3 複製3份
- partitions 3 創建3個分區
4.Topic
- 查看所有topic
./bin/kafka-topics.sh --zookeeper ip:2181 --list
- 查看指定topic
./bin/kafka-topics.sh --zookeeper ip:2181 --describe --topic kafka1
- 刪除topic
./bin/kafka-topics.sh --delete --zookeeper ip:2181 --topic kafka1
5.生產消息
- 單機
./bin/kafka-console-producer.sh --broker-list ip:9092 --topic kafka1
- 集羣
./bin/kafka-console-producer.sh --broker-list ip1:9092,ip2:9092,ip2:9092 --topic kafka1
6.消費消息
- 單機
./bin/kafka-console-consumer.sh --bootstrap-server ip:9092 --from-beginning --topic kafka1
- 集羣
./bin/kafka-console-consumer.sh --bootstrap-server ip1:9092,ip2:9092,ip3:9092 \
--topic kafka1 --from-beginning
9.consumer管理
- 查看consumer Group列表
./bin/kafka-consumer-groups.sh --list --bootstrap-server ip:9092
- 查看指定group.id的消費情況
./bin/kafka-consumer-groups.sh --bootstrap-server 47.52.199.51:9092 --group test-1 --describe
二、基本概念
1.理解kafka
Kafka是一個分佈式數據流平臺,可以運行在單臺服務器上,也可以在多臺服務器上部署形成集羣。
它提供了發佈和訂閱功能,使用者可以發送數據到Kafka中,也可以從Kafka中讀取數據。
2.Topic
主題,Kafka 中的消息都以主題爲單位進行歸類,生產者負責將消息發送到特定的主題(發送到 Kafka 集羣中的每一條消息都要指定一個主題),消費者負責訂閱主題並進行消費。比如應用程序A訂閱了主題t1,應用程序B訂閱了主題t2而沒有訂閱t1,那麼發送到主題t1中的數據將只能被應用程序A讀到,而不會被應用程序B讀到。
3.Broker
一臺kafka服務器就可以稱之爲broker,Kafka 集羣由多個 Kafka 實例組成,每個kafka實例稱爲 broker,在集羣中每個 broker 都有一個唯一的 brokerid ,不能重複。
4.Partition
分區,主題可以細分爲多個分區,一個分區只屬於一個topic,每個topic可以有一個或多個partition(分區)。物理上把topic分成一個或者多個分區,每一個分區是一個有序的隊列。且每一個分區在物理上都對應着一個文件夾,該文件夾下存儲這個分區所有消息和索引文件。Kafka使用分區支持物理上的併發寫入和讀取,從而大大提高了吞吐量。Kafka只保證一個分區的數據順序發送給消費者,而不保證整個topic裏多個分區之間的順序.
5.Record
記錄,實際寫入Kafka中並可以被讀取的消息記錄,每個record包含了key、value和timestamp。
6.Producer
生產者,也就是發送消息的一方。生產者負責創建消息,然後將其發送到 Kafka 中。
7.Consumer
消費者,也就是接收消息的一方,用來讀取Kafka中的數據。
8.Consumer Group
消費者組,一個消費者組可以包含一個或多個消費者。使用多分區+多消費者方式可以極大提高數據下游的處理速度。
consumer group是 Kafka 提供的可擴展且具有容錯性的消費者機制。組內有着多個消費者,它們共享一個公共的 id,即 group id。組內的所有消費者協調在一起來消費訂閱主題的所有分區,而且每個分區只能由同一個消費組內的一個消費者來消費。
9.Offest
Offset指的是Partition以及User Group而言,記錄某個user group在某個partiton中當前已經消費到達的位置。
10.Replicas(副本)
每一個分區,根據複製因子N,會有N個副本,比如在broker1上有一個topic,分區爲topic-1, 複製因子爲2,那麼在兩個broker的數據目錄裏,就都有一個topic-1,其中一個是leader,一個replicas同一個Partition可能會有多個Replica,而這時需要在這些Replication之間選出一個Leader,Producer和Consumer只與這個Leader交互,其它Replica作爲Follower從Leader中複製數據