Kafka基礎瞭解一下
阿新 • • 發佈:2018-12-22
Kafka簡介
Kafka是一個分散式的流式資訊處理平臺。通俗的來說,它可以被理解為是一個幫助我們臨時儲存訊息的外掛,也就是訊息中介軟體或者訊息佇列。
而它適用於什什麼時候呢? 試想,當我們獲取到的資料量特別大,而進行計算的叢集無法及時進行處理,會造成資料堆積,對叢集的影響很大,甚至可能造成資料的丟失。但是,如果我們先將資料存放在kafka伺服器叢集上,這樣的話,計算多少就拉取多少資料,不會造成資料堆積,而且kafka伺服器可以設定保留資料七天,當我們在計算中發現邏輯錯誤或者是機器故障的時候,可以從kafka上重新拉取資料進行計算。
Kafka元件介紹
那既然它是一個臨時儲存的外掛,那麼儲存的訊息由哪來?又用於哪呢?由什麼來控制讀取的是想要的訊息呢?接下來我向大家介紹一下它其中的元件。
- 生產者(producer):由生產者來生產訊息並將訊息傳送到kafka的伺服器上。例如:Flume,由Flume這個日誌聚集工具,將我們想要的資訊聚集過來並放入kafka伺服器中。
- 消費者(consumer):消費者從kafka伺服器上拉取想要消費的訊息,然後進行消費。 例如:Spark Streaming,可以分批次的從kafka上拉取資料進行準實時性流式計算。
- Topic:用於建立生產者和消費者之間的訂閱關係。生產者可以指定向哪個Topic上傳送訊息,而消費者也可以指定從哪個Topic上拉取訊息進行消費。
- TopicPartition:顧名思義就是Topic下的分割槽,用於將資料分開儲存。這個分割槽數量是由使用者來指定的,而且為了提高容錯性,分割槽還可以設定副本數,副本數也可以指定。分割槽有主從結構,當拉取訊息時,是從主partition處拉取,而從partition負責同步資料,當主partition所在機器出現故障,從partition中的一個就擔任主partition的職責。
- Broker:就是kafka叢集中的主機,每一個BrokerId對應kafka叢集中的一臺主機,BrokerId不能重複。
- 消費者組:消費者組由多個消費者組成,可以協調消費一個或多個Topic下的訊息。每一個分割槽只能被同一個消費者組下的消費者消費,一個消費者可以消費一個或多個分割槽下的訊息。當然,如果同時有兩個不同的消費者組消費同一個Topic的話,同一個partition可以同時被兩個消費者所消費,前提是這兩個消費者來自不同的消費者組。
- Offset:偏移量,拉取資料的時候就是根據偏移量所進行拉取。否則的話,豈不是每次都從頭開始讀取,造成了資料的二次甚至多次消費,影響結果。
Kafka常用的命令
- 新建一個Topic
bin/kafka-topics.sh --create --zookeeper [ip:port] --partition [分割槽數] --replication-factor [副本數] --topic [name] - 檢視Topic
檢視Topic的列表: bin/kafka-topics.sh --list --zookeeper [ip:port]
詳細檢視一個Topic資訊:bin/kafka-topics.sh --describe --zookeeper [ip:port] --topic [name] - 刪除Topic
bin/kafka-topics.sh --delete --zookeeper [ip:port] --topic [name] - 增加分割槽
bin/kafka-topics.sh --alter --zookeeper [ip:port] --partition [new num] --topic [name] - 啟動生產者
./bin/kafka-console-producer.sh --broker-list [ip:port] --topic [name] - 啟動消費者
bin/kafka-console-consumer.sh --zookeeper [ip:port] --topic [name] --from-beginning