一、Kafka訊息佇列
1、為什么需要訊息佇列?
-
解耦
-
冗余
-
擴展性
-
靈活性 & 峰值處理能力
-
可恢復性
-
順序保證
-
緩沖
-
異步通信
2、訊息佇列的模式
1、點對點模式
-
一對一,消費者主動拉取資料,訊息收到后訊息清除
2、發布/訂閱模式
-
一對多,資料產生后,推送給所有訂閱者
3、什么是Kafka
在流式計算中Kafka一般用力快取資料,Storm通過消防Kafka的資料進行計算,
(1)Apache Kafka是一個開源訊息系統,又Scala寫成,是由Apache軟體基金會開發的一個開源訊息系統專案
(2)Kafka最初是由 LinkedIn 公司開發,并于2011年初開源,2012年10月從Apache Incubator畢業,該專案的目標是為處理實時資料提供一個統一、高通量、低等待的平臺,
(3)Kafka是一個分布式訊息佇列,Kafka對訊息保存時根據Topic進行歸類,發送訊息者稱為Producer,訊息接收者為Consumer,此外Kafka集群有多個Kafka實體組成,每個實體(server)稱為broker,
(4)無論是Kafka集群,還是consumer都依賴于zookeeper集群保存一些meta資訊,來保證系統可用性,
二、Kafka集群部署與啟動
1、環境準備
1、集群規劃
| master | slave1 | slave2 |
|---|---|---|
| zk | zk | zk |
| kafka | kafka | kafka |
2、Jar包下載
-
Central Repository: org/apache/kafka
-
Apache Kafka
3、上傳Jar包,并配置kafka bin目錄的環境變數
4、修改組態檔
-
修改$KAFKA_HOME/conf中的server.properties
broker.id 每一臺機器都要不同
添加一條
delete.topic.enable=true
修改資料存放的位置
log.dirs=/usr/local/src/kafka/logs
修改zk集群的連接地址和埠’
zookeeper.connect=master:2181,slave1:2181,slave2:2181
分發到slave1和slave2,并修改broker.id
-
在ZOOKEEPER_HOME/創建data檔案夾
創建一個myid檔案 設定id
-
將ZOOKEEPER_HOME/conf下的zoo_sample.cfg 改為zoo.cfg
分發到各個節點,并修改myid
5、啟動zk集群和kafka集群
zk啟動 三臺機器
zkServer.sh start
kafka啟動 三臺機器
kafka-server-start.sh config/server.properties
三、操作Kafa集群
1、創建一個Topic
kafka-topics.sh --create --zookeeper master:2181 --partitions 2 --replication-factor 2 --topic first
--create 創建一個topic
--zookeeper 指定zookeeper的主機名和埠
--partitions 指定這個任務有幾個磁區
--replication-factor 指定這個任務有幾個副本
--topic 指定這個任務的主題名字
2、查看Kafka集群中有多少個Topic
kafka-topics.sh --list --zookeeper master:2181
3、連接生產者控制臺和消費消費者控制臺
連接生產者,連接的是kafka集群
kafka-console-producer.sh --broker-list master:9092 --topic frist
連接消費者,連接的是zk集群
kafka-console-consumer.sh --bootstrap-server master:9092 --topic first --from-beginning
4、洗掉Topic
kafka-topics.sh --delete --zookeeper 主機名和埠 --topic 主題名字
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/384176.html
標籤:其他
