Kafka基礎瞭解一下

Kafka簡介

Kafka是一個分佈式的流式信息處理平臺。通俗的來說,它可以被理解爲是一個幫助我們臨時存儲消息的插件,也就是消息中間件或者消息隊列。
而它適用於什什麼時候呢? 試想,當我們獲取到的數據量特別大,而進行計算的集羣無法及時進行處理,會造成數據堆積,對集羣的影響很大,甚至可能造成數據的丟失。但是,如果我們先將數據存放在kafka服務器集羣上,這樣的話,計算多少就拉取多少數據,不會造成數據堆積,而且kafka服務器可以設置保留數據七天,當我們在計算中發現邏輯錯誤或者是機器故障的時候,可以從kafka上重新拉取數據進行計算。

Kafka組件介紹

那既然它是一個臨時存儲的插件,那麼存儲的消息由哪來?又用於哪呢?由什麼來控制讀取的是想要的消息呢?接下來我向大家介紹一下它其中的組件。

  1. 生產者(producer):由生產者來生產消息並將消息發送到kafka的服務器上。例如:Flume,由Flume這個日誌聚集工具,將我們想要的信息聚集過來並放入kafka服務器中。
  2. 消費者(consumer):消費者從kafka服務器上拉取想要消費的消息,然後進行消費。 例如:Spark Streaming,可以分批次的從kafka上拉取數據進行準實時性流式計算。
  3. Topic:用於建立生產者和消費者之間的訂閱關係。生產者可以指定向哪個Topic上發送消息,而消費者也可以指定從哪個Topic上拉取消息進行消費。
  4. TopicPartition:顧名思義就是Topic下的分區,用於將數據分開存儲。這個分區數量是由用戶來指定的,而且爲了提高容錯性,分區還可以設置副本數,副本數也可以指定。分區有主從結構,當拉取消息時,是從主partition處拉取,而從partition負責同步數據,當主partition所在機器出現故障,從partition中的一個就擔任主partition的職責。
  5. Broker:就是kafka集羣中的主機,每一個BrokerId對應kafka集羣中的一臺主機,BrokerId不能重複。
  6. 消費者組:消費者組由多個消費者組成,可以協調消費一個或多個Topic下的消息。每一個分區只能被同一個消費者組下的消費者消費,一個消費者可以消費一個或多個分區下的消息。當然,如果同時有兩個不同的消費者組消費同一個Topic的話,同一個partition可以同時被兩個消費者所消費,前提是這兩個消費者來自不同的消費者組。
  7. Offset:偏移量,拉取數據的時候就是根據偏移量所進行拉取。否則的話,豈不是每次都從頭開始讀取,造成了數據的二次甚至多次消費,影響結果。

Kafka常用的命令

  1. 新建一個Topic
    bin/kafka-topics.sh --create --zookeeper [ip:port] --partition [分區數] --replication-factor [副本數] --topic [name]
  2. 查看Topic
    查看Topic的列表: bin/kafka-topics.sh --list --zookeeper [ip:port]
    詳細查看一個Topic信息:bin/kafka-topics.sh --describe --zookeeper [ip:port] --topic [name]
  3. 刪除Topic
    bin/kafka-topics.sh --delete --zookeeper [ip:port] --topic [name]
  4. 增加分區
    bin/kafka-topics.sh --alter --zookeeper [ip:port] --partition [new num] --topic [name]
  5. 啓動生產者
    ./bin/kafka-console-producer.sh --broker-list [ip:port] --topic [name]
  6. 啓動消費者
    bin/kafka-console-consumer.sh --zookeeper [ip:port] --topic [name] --from-beginning
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章