一、什么是Kafka?
資料工程中最具挑戰性的部分之一是如何從不同點收集和傳輸大量資料到分布式系統進行處理和分析,需要通過訊息佇列正確地分離大量資料,因為如果一部分資料無法傳送,則可以在系統恢復時傳輸和分析其他資料,有兩種訊息排隊,對于上述目的,它們都是可靠的和異步的,點對點(Point to point)和發布者——訂閱者(publisher-subscriber),下圖展示了一個典型的訊息系統,其中:訊息的生產者負責產生訊息;訊息的消費者負責處理訊息,

Kafka是一個分布式發布——訂閱訊息傳遞系統,Kafka快速、可擴展且耐用,它保留主題中的訊息源,生產者將資料寫入主題,消費者從主題中讀取資料,
Zookeeper需要覆寫Kafka生態系統,因此有必要下載它,更改其屬性并最終設定環境,在運行Zookeeper之后,應該下載Kafka,然后開發人員可以借助一些指令創建代理,集群和主題,
二、訊息佇列的分類
- 點對點(Queue)
在點對點或一對一中,有一個發件人和正在監聽發件人的多個消費者,當一個消費者從佇列收到訊息時,該特定訊息將從佇列中消失,而其他消費者無法獲得該訊息,
- 發布和訂閱系統(Topic)
在發布者——訂閱者中,發布者向同時收聽發布者的多個消費者或訂閱者發送訊息,并且每個訂閱者可以獲得相同的訊息,資料應通過資料管道傳輸,資料管道負責整合來自資料源的資料,
三、Kafka的體系架構

- 主題和發布者
有一個發布者發送訊息,訊息根據主題進行分類,每個主題都有一個或多個磁區,并有自己的偏移地址,例如,如果我們為一個主題分配復制因子= 2,那么Kafka將為每個磁區創建兩個相同的副本并在群集中找到它,
- 集群和Brokers
Kafka集群包括代理——服務器或節點,每個代理可以位于不同的機器中,并允許訂戶選擇訊息,因此,復制就像備份磁區一樣,這意味著Kafka是持久的,這有助于容錯,
- Zookeeper
Kafka集群不保留其自身生態系統的元資料,因為它是無狀態的,因此,Kafka依賴于Zookeeper來跟蹤元資料,Zookeeper應該首先啟動,實際上,Zookeeper是brokers和consumers之間的介面,它的存在是容錯的必要條件,Kafka代理負責負載平衡,假設該主題有一個主題和多個磁區,每個磁區都有一個領導者,定期確認其與Zookeeper的偏移量,因此,如果一個節點或代理失敗,Kafka可以從Zookeeper請求的最后一個偏移地址繼續操作,因此Zookeeper在崩潰情況下在Kafka恢復中起著至關重要的作用,
四、Kafka單機單Broker的部署
- 部署ZooKeeper
配置/root/training/zookeeper-3.4.6/conf/zoo.cfg檔案 dataDir=/root/training/zookeeper-3.4.6/tmp server.1=hadoop112:2888:3888 在/root/training/zookeeper-3.4.6/tmp目錄下創建一個myid的空檔案 echo 1 > /root/training/zookeeper-3.4.6/tmp/myid 啟動ZooKeeper zkServer.sh start 查看ZooKeeper的狀態 zkServer.sh status
由于我們部署的是單節點的ZooKeeper,所以ZooKeeper的狀態將是Standalone,
- 部署Kafka
修改server.conf檔案 broker.id=0 port=9092 log.dirs=/root/training/kafka_2.11-2.4.0/logs/broker0 zookeeper.connect=localhost:2181 啟動Kafka bin/kafka-server-start.sh config/server.properties &
- 使用JPS查看后臺行程

五、測驗Kafka
創建Topic bin/kafka-topics.sh --create --zookeeper bigdata111:2181 --replication-factor 1 --partitions 3 --topic mytopic1 發送訊息 bin/kafka-console-producer.sh --broker-list bigdata111:9092 --topic mytopic1 接收訊息 訊息消費 bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --topic mytopic1 從開始位置消費 bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --from-beginning --topic topicName 顯示key消費 bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --property print.key=true --topic mytopic1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/6034.html
標籤:大數據
下一篇:bin/hive進入hive報錯
